0

WebMethods を使用して、select に SQL の結果を入力しようとしています。

データを取得して渡すことはできますが、形式が [{"",""},{"","" ではなく [["",""],["",""]] になっていることに気付きました}]。

$.each を使用すると、選択のオプションとして単一の文字が取得され、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

Jクエリ

$(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));
            });
    }
});
});
4

2 に答える 2

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));
}
于 2012-09-12T17:32:26.200 に答える
0

$.each 関数を使用して同じことを行うこともできます

$.each(msg.d , function(i){
  $('#supplierSelect').append($('<option>').text(msg.d[i].name).attr('value', msg.d[i].value));
}
于 2012-09-13T22:57:38.337 に答える