2013-06-18 119 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