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