未捕获的TypeError:无法使用'in'运算符在

时间:2015-09-26 17:36:10

标签: javascript jquery json

当我更改下拉列表时,我有一些javascript代码正在进行ajax调用。它只是从下拉列表中传递选定的值,并获得与所选值相关的集合:

$("#ddl").change(function () {
    $.ajax({
        type: "POST",
        url: "/MyService.asmx/GetCollection",
        data: "{'selectedId':'" + $(this).val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            $.each(response.d, function (i, item) {
                alert(item.Text);
            });
        }
    });
})

这是正常的,这是我从ajax调用中得到的json响应。

d: 
    "[{"Id":"c709b6d3-5841-4240-b25c-9f730530a998","Text":"Item 1"},   
      {"Id":"c7dd6ee0-836a-4b19-9b88-f8f2455b6e32","Text":"Item 2"}]"

但是当我尝试遍历response.d中的每个项目并提醒item.Text时,我收到此错误消息:

  

未捕获TypeError:无法使用'in'运算符在[{“Id”:“c709b6d3-5841-4240-b25c-9f730530a998”,“Text”:“Item 1”},{“Id中搜索'161' “:”c7dd6ee0-836a-4b19-9b88-f8f2455b6e32“,”文字“:”第2项“}}

我是否在循环这个错误?或者我输出的内容不正确?

1 个答案:

答案 0 :(得分:1)

与评论中提到的 @Tushar 一样,您必须使用循环,例如for循环如下:

var response = {d: [{"Id":"c709b6d3-5841-4240-b25c-9f730530a998","Text":"Item 1"}, {"Id":"c7dd6ee0-836a-4b19-9b88-f8f2455b6e32","Text":"Item 2"}]};

for(var i=0;i<response.d.length;i++){
    alert(response.d[i].Text);
}

如果响应ID字符串使用JSON.parse

var response = JSON.parse('{"d": [{"Id":"c709b6d3-5841-4240-b25c-9f730530a998","Text":"Item 1"}, {"Id":"c7dd6ee0-836a-4b19-9b88-f8f2455b6e32","Text":"Item 2"}]}')

希望这有帮助