$ .each不使用JavaScriptSerialized String Array

时间:2012-09-12 17:25:50

标签: jquery arrays string each javascriptserializer

尝试使用WebMethods使用sql结果填充select。

我可以获取并传递数据,但我注意到格式为[[“”,“”],[“”,“”]而不是[{“”,“”},{“” “”}]。

当我使用$ .each时,我得到单个字符作为select的选项,输出中的每个字符,包括JSON分隔符。

VB

Dim MArray()() As String = New String(sqlDataset.Tables(0).Rows.Count)() {}
Dim i As Integer = 0

For Each rs As DataRow In sqlDataset.Tables(0).Rows
    MArray(i) = New String() {rs("suppliername").ToString(), rs("supplierid").ToString()}
    i = i + 1
Next

Dim js As JavaScriptSerializer = New JavaScriptSerializer()
Dim sJSON As String = js.Serialize(MArray)
Return sJSON

Jquery的

$(document).ready(function () {

$.ajax({
    type: "POST",
    url: "SupplierAdmin.aspx/PopulateSupplierSelectDropDownList",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        $("#supplierSelect").empty();
        $.each(msg.d, function(name, value) {
                $('#supplierSelect').append($('<option>').text(name).attr('value', value));
            });
    }
});
});

2 个答案:

答案 0 :(得分:1)

而不是.each循环,请尝试:

for(var i=0; i < msg.d.length; i++) {
  $('#supplierSelect').append($('<option>').text(msg.d[i].name).attr('value', msg.d[i].value));
}

答案 1 :(得分:0)

使用$ .each函数

也可以完成同样的事情
$.each(msg.d , function(i){
  $('#supplierSelect').append($('<option>').text(msg.d[i].name).attr('value', msg.d[i].value));
}