不确定如何在Javascript/jQuery中解析此PHP/JSON对象

不确定如何在Javascript/jQuery中解析此PHP/JSON对象,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,据我所知,因为我在PHP中使用JSON\u encode创建了一个JSON对象,然后使用echo来显示它,所以我可以直接在JS中作为对象访问它,如下所示 .done(function(response) { var result = response; $(result).hide().prependTo('#messages').fadeIn('slow'); });` 但是,如何访问对象中的数据?我的对象包含错误,该错误将为真或假,以及错误消息,同时包含格式化为错误 PHP

据我所知,因为我在PHP中使用
JSON\u encode
创建了一个JSON对象,然后使用
echo
来显示它,所以我可以直接在JS中作为对象访问它,如下所示

.done(function(response) {
    var result = response;
    $(result).hide().prependTo('#messages').fadeIn('slow');
});`
但是,如何访问对象中的数据?我的对象包含
错误
,该错误将为真或假,以及
错误消息
,同时包含格式化为
  • 错误

  • PHP返回此-
    {“error”:true,“error_messages”:“
  • 名称太短(至少4个字符)
  • 名称太短(至少4个字符)”
  • 如果服务器返回正确的
    内容类型
    头(
    应用程序/json
    ),jQuery将为您解析响应并提供一个对象,您可以这样使用:

    console.log(response.error_messages); // "<li>Name too short...
    
    在你的电话里

    无论如何,您在对问题的评论中引用的JSON都是有效的

    因此,您可能希望:

    if (response.error) {
        $(response.error_messages).hide().prependTo('#messages').fadeIn('slow');
    }
    else {
        // whatever you show when it's successful
    }
    

    但请注意,
    #消息
    必须是
    菜单
    ul
    ol
    元素,因为如果服务器返回正确的
    内容类型
    头(
    应用程序/json
    ),则您的
    错误消息定义了一个,jQuery将为您解析响应并提供一个对象,您可以这样使用:

    console.log(response.error_messages); // "<li>Name too short...
    
    在你的电话里

    无论如何,您在对问题的评论中引用的JSON都是有效的

    因此,您可能希望:

    if (response.error) {
        $(response.error_messages).hide().prependTo('#messages').fadeIn('slow');
    }
    else {
        // whatever you show when it's successful
    }
    

    但请注意,
    #messages
    必须是一个
    菜单
    ul
    ol
    元素,因为您的
    错误消息定义了一个。

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

    result.error; // true or false
    result.error_messages; // the error messages
    
    您可能需要对其进行解析,但jQuery(看起来您正在使用它)可能会为您进行解析。如果没有,请使用
    JSON.parse

    var myobj = JSON.parse(result);
    

    你应该可以像普通人一样使用它。例如:

    result.error; // true or false
    result.error_messages; // the error messages
    
    您可能需要对其进行解析,但jQuery(看起来您正在使用它)可能会为您进行解析。如果没有,请使用
    JSON.parse

    var myobj = JSON.parse(result);
    

    您的JSON输出是什么样子的?安装Firebug并粘贴一个示例输出…response.error和response.error\u消息将存储这些值
    response.error
    response.error\u消息
    @cantsay:要改进您的问题,请使用问题下的“编辑”链接,而不是注释。您的JSON输出是什么样子?安装Firebug并粘贴一个示例输出…response.error和response.error\u消息将存储这些值
    response.error
    response.error\u消息
    。@cantsay:要改进您的问题,请使用问题下的“编辑”链接,而不是注释。我不知道是否有人同意,但是我认为总是显式地将
    数据类型设置为您期望的值是一个好主意,这样它总是被正确地解析。再说一次,更好的方法可能是永远不要这样做,所以你要确保你的服务器配置正确(但你会留下可能的故障)@Ian:是的,这是一个判断的电话。我倾向于确保服务器发回正确的信息,这样链中的所有链接(代理和诸如此类)都有好的信息可供使用。这对于大多数服务器端技术(包括PHP)来说非常简单。谢谢,但是我尝试了
    alert(result.error\u messages)
    ,它说undefined@cantsay:好的。那么,当您使用调试器处理这个问题时,您会看到什么呢<代码>警报
    不是一个非常有用的调试工具。您的浏览器内置了一个调试器,它具有强大的工具,可以一条语句一条语句地遍历代码语句,使用断点等。这样做时,您会看到什么?好的,did
    console.log(response)
    ,它显示
    TypeError:e未定义
    (jquery.min第4行)下面是PHP的回复,我在原始问题中添加了
    ()
    。我尝试将
    error\u messages
    更改为“test”,我不知道是否有人同意,但我认为总是显式地将
    dataType
    设置为您期望的值是一个好主意,以便始终正确解析它。再说一次,更好的方法可能是永远不要这样做,所以你要确保你的服务器配置正确(但你会留下可能的故障)@Ian:是的,这是一个判断的电话。我倾向于确保服务器发回正确的信息,这样链中的所有链接(代理和诸如此类)都有好的信息可供使用。这对于大多数服务器端技术(包括PHP)来说非常简单。谢谢,但是我尝试了
    alert(result.error\u messages)
    ,它说undefined@cantsay:好的。那么,当您使用调试器处理这个问题时,您会看到什么呢<代码>警报
    不是一个非常有用的调试工具。您的浏览器内置了一个调试器,它具有强大的工具,可以一条语句一条语句地遍历代码语句,使用断点等。这样做时,您会看到什么?好的,did
    console.log(response)
    ,它显示
    TypeError:e未定义
    (jquery.min第4行)下面是PHP的回复,我在原始问题中添加了
    ()
    。我还尝试将
    错误消息
    更改为“test”