【发布时间】:2016-10-28 18:37:09
【问题描述】:
我正在开发一个应用程序,它对返回 json_encode 数据的 PHP 脚本进行 Ajax 调用。
数据正按预期从 PHP 返回。但是当试图在 jquery 中解析它时,我得到了一个控制台错误:
未捕获的类型错误:无法使用“in”运算符搜索“1009”
后面是我的数据数组的副本。
这里是json编码数据的一个例子:
[
{"u_id":"21747","fname":"Andy","lname":"","email":"foo@bar.com"},
{"u_id":"3748","fname":"John","lname":"","email":"foo@baz.com"},
{"u_id":"451750","fname":"Peter","lname":"","email":"someone@else.com"},
]
我使用的 jquery 如下。所需的输出是在复选框旁边显示人们的电子邮件地址列表:
$(function() {
$('#myModal').on('shown.bs.modal', function() {
$(".modal-body").html("Loading...");
$.ajax({
url: "<?= $router->pathFor('/admin/ajax/find-user'); ?>",
data: {
searchInput: $('#searchInput').val()
},
method: "POST",
}).done(function(data) {
//$(".modal-body").html(data);
$.parseJSON(data);
$.each(data, function(key, value){
$(".modal-body").html('<input type="checkbox" id="' + value.u_id + '">' + value.email + "<br>");
});
});
});
});
这有什么问题,错误是什么意思(我在数据中的任何地方都看不到 1009,虽然不确定这是否是真正的意思?)
【问题讨论】:
-
“为了简洁起见,我只是展示 .done 部分” 过于简洁。
data是什么?它来自哪里?如果您通过ajax加载它并使用正确的Content-Type标头返回它,它可能已被解析为对象数组,但是... -
执行
console.log(data);并将您的输出粘贴到问题中。 -
@T.J.Crowder 更新以显示完整的 jquery 正在使用中
-
@divix: 更好的是,与其使用
console.log手电筒在黑暗中磕磕绊绊,不如使用浏览器内置的全功能调试器来打开灯。 :-) -
$.parseJSON(data);是在另一位评论者的建议下(如下),正如你所说,这没有任何区别。当我执行console.log(data)时,它会输出给定的 json 数组 - 没有任何错误。这也是为什么我在那里有//$(".modal-body").html(data);的原因,这样我就可以检查 PHP 发回的内容,但看起来没问题。