2013-06-18 86 views
0

我有数据来自mysql并需要在下拉列表中显示。代码如下。多个数据拆分为数组

该数据值将来自mysql。所以我需要在下拉列表中显示所有这些值。寻找解决方案。

var data = "user data1, user data2, user data3, user data4/ user data6, user data7, user data8/ user data5, user data9"; 


function studentPopulate(){ 
    $.each(newTotalData, function(key, value) { 
    $('#sList') 
    .append($("<option></option>") 
    .attr("value",key) 
    .text(value)); 
}); 
} 

var totalData = []; 
var data_array = []; 
var arrayVal = []; 
var newTotalData = new Array(); 
function studentInfo(){ 
$.getJSON("checkData.php", {section_id:section_id, uID: uID}, function(data) { 
    $.each(data, function(i, user) { 
    var data = user.groupContent; 
    data_array = data.split('/').join(','); 
    totalData.push(data_array); 
    arrayVal = totalData; 
    newTotalData = arrayVal[0].split(','); 
    studentPopulate(); 
    }); 
}); 
} 

PHP代码是在这里:

<?php 

include 'connection.php'; 
$uID = $_GET["uID"]; 
$cid = $_GET["section_id"]; 
mysqli_select_db($con, "DB"); 

$Query="SELECT * from table WHERE uid='".$uID."' and section_id='".$cid."'"; 
$result = mysqli_query($con, $Query); 
$totalRecords = mysqli_num_rows($result); 
//echo $totalRecords; 
if($totalRecords) { 
    while ($row = mysqli_fetch_array($result)) { 
    $returnData[]=array( //for Json data array 
     'userName' => $row['fullName'], 
     'groupContent' => $row['groupContent'] 

); 
} 
} 


mysqli_close($con); 
echo json_encode($returnData); 

?> 

下拉值的变化。 我需要找出下拉文本inarray。只是更新了我的代码。它似乎无法找到数组中的值。请帮忙。 它可以找到newTotalData,但我需要找出该下拉值的组(数组)。

$('#sList').change(function() 
    { 
     var str = $(this).find(":selected").text(); 
     if($.inArray(str,data_array[0])>=0){alert(data_array[0])}; 
    }); 
} 
+0

你的'arrayVal'有3个不同的数组,它不能拆分 –

+0

当我提醒totalData时,它显示我所有的数组。我们不能以某种方式拆分totalData。 – fguru

+0

你想在选择列表中显示什么? –

回答

1

你需要做的是这样的 -

var totalData = []; 
function test(){ 
    var data = "user data1, user data2, user data3, user data4/ user data6, user data7, user data8/ user data5, user data9"; 
    data_array = data.split('/').join(','); 
    totalData.push(data_array); 
    arrayVal = totalData; 
    newTotalData = arrayVal[0].split(','); 
    studentPopulate(); 
} 

function studentPopulate(){ 
    $.each(newTotalData, function(key, value) { 
    $('#sList') 
    .append($("<option></option>") 
    .attr("value",key) 
    .text(value)); 
}); 
} 

test(); 

演示---->http://jsfiddle.net/ht3Y7/1/

+0

太好了。工作正常。唯一的问题是我从数据库中获取这些值作为json_encode,在jQuery中我的var数据就是这样。 var data = user.groupContent;和你的代码不工作。有什么需要做的事就像做一个字符串或其他东西。 – fguru

+0

@fguru你能显示你的完整代码吗? –

+0

嗨pXL,我刚刚更新了上面的代码。最后一部分是我的原始代码。 – fguru

0

它是不是从你的例子清楚哪些用户数据的一部分,包括列表框中的值,并部分包含列表框文本。为了说明什么,我想你可能会后,我创造了这个fiddle你:

HTML:

<select id='sList'></select> 

的Javascript:

function test() { 
    var data = "100, Bob Smith/200, John Wayne"; 
    studentPopulate(data.split('/')); 
} 

function studentPopulate(data) { 
    $.map(data, function (student) { 
     var studentRecord = student.split(','); 
     var id = studentRecord[0].trim(); 
     var name = studentRecord[1].trim(); 
     $('#sList') 
     .append($("<option></option>") 
       .val(id) 
       .html(name)); 
    }); 
} 

test(); 

在这个例子中,我假设列表框值是列表中的第一个元素,文本是第二个元素。

0

您应该使用正则表达式将数据字符串拆分为数组。 var data =“用户数据1,用户数据2,用户数据3,用户数据4 /用户数据6,用户数据7,用户数据8 /用户数据5,用户数据9”; var data =“用户数据1,用户数据3,

newTotalData = data.split(/[,\/]/); //split string to array. 

newTotalData为阵列

如果你需要一个对象,那么你需要将这个数组传递给一个对象。

+0

这也适用。谢谢。 – fguru

+0

如何将数据拆分为三个不同的时代。在'/'后面分割。 – fguru

+0

[,\ /]表示分割','或'/'。 – user2494495