10
$.ajax({
    async: false,
    type: "POST",
    url: url+"module/listing/"+projectId,
    data: "ajax=true",
    success: function(response) {
        $.each(response, function(key, val) {
        alert(val.id);
        });
    }
});

这是我的代码。Ajax 成功我收到 JSON 响应。响应采用数组格式。我想提醒响应。但是 JQuery 1.9.1 版本出错"TypeError: invalid 'in' operand obj"

4

7 回答 7

10
success: function(response) {
        response=JSON.parse(response);
        $.each(response, function(key, val) {
        alert(val.id);
        });
    }
于 2013-05-17T06:12:36.307 回答
3

在对 JSON 数组进行两次编码后出现此错误。也许它会帮助任何人。

于 2013-06-20T09:52:05.373 回答
2

用于dataType: "json"让 jQuery 将响应解析为 JSON。它会解决你的问题。

于 2014-02-28T14:17:02.203 回答
2

我有同样的问题。该错误是由以下行中的 jQuery 函数“isArraylike(obj)”触发的:

return type === "array" || type !== "function" &&
    ( length === 0 ||
    typeof length === "number" && length > 0 && ( length - 1 ) in obj );

Javascript 'in' 操作符需要一个对象作为操作数,所以如果你做 jQuery.type(response) 它可能会显示一个对象以外的东西(例如字符串或 null)

所以阿米特的答案应该有效 - 如果没有,请检查响应数据的类型并从那里开始工作。

于 2013-06-04T15:23:03.053 回答
0

试试这个,对我有用

$.each(eval(response), function(key, val)

由于某种原因(我不知道),响应被视为字符串而不是对象,因此您必须使用eval().

于 2014-05-19T09:20:35.090 回答
0

同样的错误,在我的情况下,我没有将本地定义为数组,而是将其定义为字符串。JSON.parse它成功了。

于 2014-02-16T18:14:58.530 回答
0

我在向 jQuery DataTables 发送列名数组时收到此错误。该数组需要是一个对象数组,而不仅仅是一个名称数组。链接到列

坏列:[“Column1”,“Column2”]

好列:[{title: "Column1"}, {title: "Column2"}]

于 2016-08-03T17:14:17.200 回答