1

所以据我了解,因为我在PHP中使用创建了一个JSON对象json_encode然后用来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>"}

4

2 回答 2

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、、ulol元素,因为您error_message定义了一个li元素

于 2013-07-17T21:41:30.360 回答
1

您应该能够像正常一样将其用作对象。例如:

result.error; // true or false
result.error_messages; // the error messages

您可能需要解析它,但 jQuery(看起来您正在使用它)可能会为您做到这一点。如果没有,请使用JSON.parse

var myobj = JSON.parse(result);
于 2013-07-17T21:41:32.393 回答