所以从我的理解,因为我使用json_encode
在PHP中创建了一个JSON对象,然后使用echo
来显示它,我可以直接作为JS中的对象访问它,就像这样
.done(function(response) {
var result = response;
$(result).hide().prependTo('#messages').fadeIn('slow');
});`
但是,如何访问对象中的数据?我的对象包含error
,无论是真还是假,error_message
包含格式为<li>error</li>
的错误
PHP返回 - {"error":true,"error_messages":" <li>Name too short (minimum of 4 characters)<\/li> <li>Name too short (minimum of 4 characters)<\/li>"}
答案 0 :(得分:3)
如果您的服务器返回正确的Content-Type
标题(application/json
),jQuery将为您解析响应并为您提供一个对象,您可以这样使用:
console.log(response.error_messages); // "<li>Name too short...
如果您的服务器未返回正确的Content-Type
标题,则可以通过提供
dataType: "json"
在$.ajax
来电中。
无论哪种方式,您在问题评论中引用的JSON都是有效的。
所以可能是你想要的:
if (response.error) {
$(response.error_messages).hide().prependTo('#messages').fadeIn('slow');
}
else {
// whatever you show when it's successful
}
但请注意,#messages
必须为menu
,ul
或ol
元素,因为您的error_message
定义了li
element
答案 1 :(得分:1)
你应该能够像平时那样将它用作对象。 E.g:
result.error; // true or false
result.error_messages; // the error messages
您可能需要解析它,但jQuery(它看起来像您正在使用)可能会为您做到这一点。如果没有,请使用JSON.parse
:
var myobj = JSON.parse(result);