TypeError:jquery 1.9.1版本中的'operand obj'无效'

时间:2013-05-17 06:06:05

标签: jquery

$.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"

7 个答案:

答案 0 :(得分:10)

success: function(response) {
        response=JSON.parse(response);
        $.each(response, function(key, val) {
        alert(val.id);
        });
    }

答案 1 :(得分:3)

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

答案 2 :(得分: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)它可能会显示除对象之外的东西(例如string或null)

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

尝试这个,为我工作

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

出于某种原因(我不知道),响应被认为是一个字符串而不是一个对象,所以你必须将其转换为'使用eval()

答案 6 :(得分:0)

我在向jQuery DataTables发送一个列名数组时遇到了这个错误。数组需要是一个对象数组,而不仅仅是一个名字数组。 link to columns

BAD 列:[" Column1"," Column2"]

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