簡體   English   中英

從asp.net Web服務解析Json數據並將其填充在asp.net下拉列表中

[英]Parsing Json data from asp.net webservice and populating it in asp.net dropdownlist

我試圖填充從我的Web服務以JSON返回的asp.net dropdownlist。

網絡服務

 [WebMethod(EnableSession = true)]
    public string GetActiveDepositAccountsForLoanAlert(string customerId)
    {
        var data = BusinessLayer.SMS.SmsSetup.GetActiveDepositAccountsForLoanAlert(customerId.ToLong());
        var json = new JavaScriptSerializer().Serialize(data);
        return json;
    }

Web服務返回

[{ “賬戶號碼”: “NS-0000092”},{ “賬戶號碼”: “6MR-0000002”},{ “賬戶號碼”: “1YFD-0000007”}]

我正在從ajax調用中調用數據,並將其填充到我的下拉列表中。

阿賈克斯電話

  function GetActiveDepositAccounts(customerrId) { var customerId = $('#CustomerIdHiddenField').val(); var data = { customerId: $('#CustomerIdHiddenField').val() }; var json_data = JSON.stringify(data); $.ajax({ type: "POST", url: "/WebMethods/Misc.asmx/GetActiveDepositAccountsForLoanAlert", data: json_data, contentType: "application/json; charset=utf-8", dataType: "json", success: OnSuccess, failure: function (response) { alert(response.d); } }); } function OnSuccess(r) { var depositRadioList = $("[id*=DepositAccountDropDownList]"); depositRadioList.empty().append('<option selected="selected" value="0">Please select</option>'); for (var i = 0; i < rdlength; i++) { depositRadioList.append('<option>' + rd[i] + '</option>'); } } 

數據在json中填充。在我的下拉列表中,我只希望帳號為NS-0000092。我在下拉列表中獲取整個json。我在這里搜索並看到很多與此Json解析問題有關的問題。我不是新手,所以在將其標記為重復之前,請先看一下代碼。謝謝。

我不能感到震驚,因為您的GetActiveDepositAccountsForLoanAlert返回的是字符串而不是對象,因此rd被視為字符串。 嘗試2件事之一。 或者:

  1. 更改方法簽名以返回數據類型,並且不要使用JavaScriptSerializer。 要么,
  2. 在您的OnSuccess函數中,添加var data = JSON.parse(rd)並在for循環中使用該變量。

單個對象返回

如果使用“ 整個json ”,則表示每個選項獲得一個{"AccountNumber":"6MR-0000002"} ,請嘗試輸出目標AccountNumber對象的值(例如rd[i].AccountNumberrd[i]["AccountNumber"] )。

修改功能

    var depositRadioList = $("[id*=DepositAccountDropDownList]");
        depositRadioList.empty().append('<option selected="selected" value="0">Please select</option>');
        for (var i = 0; i < r.d.length; i++) {
            depositRadioList.append('<option>' + r.d[i].AccountNumber + '</option>');
        }

返回的對象數組

如果每個選項的結果是一個完整的AccountNumber對象數組,則需要遍歷r對象,直到到達Account Number對象列表為止。

看看我的Example JS Fiddle 可能有一種更簡潔的方法來執行此操作,但是為了展示這一原理,我已經設計了嵌套循環,以使您進入<select></select>所需的對象值列表。

我正在使用JQuery $ .each()方法,但是可以使用for循環。 我建議僅使用一個或另一個來保持一致性。 如果數據集確實很大, for循環將具有更好的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM