循环遍历JSON数组结果并附加下拉列表

时间:2017-07-13 14:21:22

标签: jquery json ajax

我有一个使用以下JSON成功响应的ASMX Web服务:

[{
    "Id": 49,
    "SupplierName": "Supplier 1"
}, {
    "Id": 50,
    "SupplierName": "Supplier 2"
}, {
    "Id": 51,
    "SupplierName": "Supplier 3"
}, {
    "Id": 52,
    "SupplierName": "Supplier 4"
}]

我试图让我的ajax调用循环遍历这个数组并将结果追加到我表单中的select控件。不幸的是,我对使用ajax还不是很新,但还没有完成。任何指导都会有所帮助。

$.ajax({
            type: "POST",
            url: "/StockPileDelivery.asmx/PopulateSupplierDdl",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                var data = $.parseJSON(msg.d);
                $.each(data, function (i, item) {
                    alert(i);
                    // $("#dropDownCars").append("<option>" + value.carsName + "</option>");
                });
            },
            error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
            },
        });

更新 下面是我修改过的AJAX,它返回一个错误说明&#34;不能使用&#39;在&#39;运营商搜索&#39; 158&#39;在

        $.ajax({
            type: "POST",
            url: "/StockPileDelivery.asmx/PopulateSupplierDdl",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                var data = msg.d;
                $.each(data, function (i, item) {
                    alert(item.Id);
                    //$("#Suppliers").append("<option value='" + item.Id + "'>" + item.SupplierName + "</option>");
                });

            },
            error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
            },
        });

2 个答案:

答案 0 :(得分:1)

这里的数据已经是一个对象了,这就是为什么我没有做parseJSON方法的原因。这是一个工作小提琴:

&#13;
&#13;
var msg = [{
    "Id": 49,
    "SupplierName": "Supplier 1"
}, {
    "Id": 50,
    "SupplierName": "Supplier 2"
}, {
    "Id": 51,
    "SupplierName": "Supplier 3"
}, {
    "Id": 52,
    "SupplierName": "Supplier 4"
}];

$(function(){
	$.each(msg, function (i, item) {
    	$("#dropDownCars").append("<option value='"+item.Id+"'>" + item.SupplierName + "</option>");
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="dropDownCars">
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

从表面上看,你的ajax看起来还不错

查看$ .each文档 - http://api.jquery.com/jquery.each/

函数中的

i是索引,item是实际值。 alert(item)(或者更好console.log(item))会证实这一点。

你可能想要像

这样的东西
$("#dropDownCars").append("<option>" + item.SupplierName+ "</option>");