当我更改下拉列表时,我有一些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项“}}
我是否在循环这个错误?或者我输出的内容不正确?
答案 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"}]}')
希望这有帮助