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);

?>

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

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

3 回答 3

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/

于 2013-06-18T20:28:39.407 回答
0

从您的示例中不清楚用户数据的哪一部分包含列表框值,哪一部分包含列表框文本。为了说明我认为您可能会追求的东西,我为您创建了这个小提琴

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();

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

于 2013-06-18T20:29:42.803 回答
0

您应该使用正则表达式将数据字符串拆分为数组。

var data = "用户数据1,用户数据2,用户数据3,用户数据4/用户数据6,用户数据7,用户数据8/用户数据5,用户数据9";

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

newTotalData 是一个数组

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

于 2013-06-18T20:54:43.167 回答