这是非常基本的,但我现在已经被困了一个多小时,因为我找不到确切的例子。感谢您提供的任何链接。
我在 php 中构建 JSON,如下所示:
return json_encode(['error' => 'customer number not found']);
它返回一个如下所示的基本数组(来自检查):
{error: 'customer number not found'}
我通过 jQuery 进行了 Ajax/getJSON 调用:
$.getJSON( url, function( response ) {
$.each(response[0], function(key, value) {
// Check response for errors
if (key == "error") {
// display message
$(message_area).innerHTML = value;
// Show the error message
$(message_area).show();
};
});
});
我只想检查第一个值,然后显示第二个值并显示容器。上面的代码给了我
Uncaught TypeError: Cannot read property 'length' of undefined
最佳答案
代替使用 $.each
,执行相同操作的更好方法(考虑到当前场景)是检查 response.error
是否存在。 :)
将您的代码更改为类似
$.getJSON( url, function( response ) {
if (response.error){
$(message_area).html(response.error);
// Show the error message
$(message_area).show();
} else{
// No error, do your success stuff
}
});
附录:
首先,您从 PHP 获得的响应
不是一个数组。它是一个物体。与循环访问对象的键和值相比,检查对象中的现有属性是更明智、更直观的处理方式。
第二 - 你的 $(message_area)
是一个 jQuery 对象。您不能按照您设置的方式直接为 jQuery 对象设置innerHTML。假设 message_area
仅选择一个元素,执行此操作的方法是
$(message_area)[0].innerHTML = "你的值(value)";
但是如果您使用 jQuery,那么遵循 jQuery 的精神更为明智,所以您实际上应该做的是
$(message_area).html('您的值(value)');
希望有帮助。 :)
关于php - jQuery 从 ajax 响应中读取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32133652/