$.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"
。
答案 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"}]