Javascript JSON调用返回[object]或未定义

Javascript JSON调用返回[object]或未定义,javascript,jquery,json,parsing,Javascript,Jquery,Json,Parsing,非常初级的问题。尝试学习JSON并在获取正确返回数据方面遇到困难。我试图使用JSON从php表单返回错误,使用JSON\u encode($errs,JSON\u FORCE\u OBJECT),但首先我想让下面非常简单的代码能够理解JSON对象 我在这里查看了类似的线程,阅读了整个JSON.org文档,查看了JQuery的$.getJSON()方法,并插入了文档中的精确代码,以及JSON文档的精确代码,我似乎仍然无法得到除“undefined”或“[object,object]”之外的响应 我

非常初级的问题。尝试学习JSON并在获取正确返回数据方面遇到困难。我试图使用JSON从php表单返回错误,使用
JSON\u encode($errs,JSON\u FORCE\u OBJECT)
,但首先我想让下面非常简单的代码能够理解JSON对象

我在这里查看了类似的线程,阅读了整个JSON.org文档,查看了JQuery的$.getJSON()方法,并插入了文档中的精确代码,以及JSON文档的精确代码,我似乎仍然无法得到除“undefined”或“[object,object]”之外的响应

我收到一个“未定义”警报。我尝试将它放入数组对象中

{“messages”:[{“message”:“hi”}}
并使用

resp.messages[0]调用它。message
运气不佳。我尝试将内容类型更改为“application/json”和“text/plain”,但都没有成功。也尝试过

$(document).ready(function() {  
var resp = jQuery.parseJSON('{"message":"hi"}');
$("a#button").click(function(resp) {
alert(resp.message)
});
});

你在这里混淆了几个不同的元素

简单示例,基于问题中的最后一个代码块:

$(document).ready(function() {  
    var resp = $.parseJSON('{"message":"hi"}');
    $('#button').click(function(event) {
        alert(resp.message);
    });
});

此代码的版本不起作用,因为
click
回调函数将click事件对象作为其参数接收。回调中的
resp
参数名称隐藏了
resp
变量。

您在这里混淆了几个不同的元素

简单示例,基于问题中的最后一个代码块:

$(document).ready(function() {  
    var resp = $.parseJSON('{"message":"hi"}');
    $('#button').click(function(event) {
        alert(resp.message);
    });
});

此代码的版本不起作用,因为
click
回调函数将click事件对象作为其参数接收。回调中的
resp
参数名称隐藏了
resp
变量。

+1:这是正确答案
resp
不是OP认为的那样。这是正确的,只是想添加一件我认为有帮助的事情。如果您想查看您发出的警报,可以使用console.log()和console.dir(),并在chrome控制台、firebug等中查看结果。@Nico同意。我刚才在评论中也提到了类似的观点。感谢您快速准确的回复。我认为变量需要声明,然后像PHP一样传递到函数中。So
(函数(resp){alert(resp.message);})
类似于
公共函数find_by_id($id=$userid){“SELECT*FROM table WHERE id=”$id;}
。你能告诉我在哪里可以学到更多关于事件对象、JSON对象和其他JS对象的知识吗?您提供的代码与不明确的
单击(函数()配合使用{
,所以我不清楚到底需要将哪些对象传递到函数中才能在这些函数中访问。@Matt Ball谢谢,在提交下一个问题之前,我一定要阅读指南。我已经在同一页中使用json对象,现在使用JQuery表单和验证插件尝试表单。不要使用J在我的成功回调中还有SON对象。当ajaxSubmit中的唯一选项是
success:mycallbackcn时,
一切正常。当我添加
数据类型:“json',
选项时,一条记录插入MySQL数据库,但没有客户端响应。处理提交的PHP文件有
任何建议吗?+1:这是正确的t回答。
resp
不是OP所认为的。这是正确的,只是想添加一件我认为有帮助的事情。如果您想查看您发出的警报,可以使用console.log()和console.dir(),并在chrome控制台、firebug等中查看结果。@Nico同意。我只是在OP上发表了类似的评论。感谢您快速准确的响应。我认为需要声明变量,然后将其传递到函数中,如PHP.So
(函数(resp){alert(resp.message);});
类似于
公共函数find_by_id($id=$userid){“SELECT*FROM table WHERE id==”$id;}
。您能告诉我在哪里可以了解更多关于事件对象、JSON对象和其他JS对象的信息吗?您提供的代码使用了一个模棱两可的
单击(function(){
,所以我不清楚到底需要将哪些对象传递到函数中才能在这些函数中访问。@Matt Ball谢谢,在提交下一个问题之前,我一定要阅读指南。我已经在同一页中使用json对象,现在使用JQuery表单和验证插件尝试表单。不要使用J我的成功回调中还有一个SON对象。当ajaxSubmit中的唯一选项是
success:mycallbackcn时,
一切正常。当我添加
数据类型:“json',
选项时,一条记录插入MySQL数据库,但没有客户端响应。处理提交的PHP文件有
任何建议吗?请注意,只有您r最后一个代码片段涉及任何JSON(这是一种基于Javascript中的对象和数组符号[并以其命名])的文本数据格式。这个问题的大部分是关于Javascript语法的对象和数组符号。(作为其AJAX机制的一部分,jQuery将JSON格式文本反序列化为适当的Javascript结构,从而进一步模糊这两个概念之间明显的“界线”,这没有帮助。)与其使用
alert
进行调试,不如使用调试器。如果警报显示
“[对象]”
(这是由
对象返回的字符串。toString
),一个合适的调试器将允许您查看对象的实际结构。请注意,只有您的最后一个代码段涉及任何JSON(这是一种基于Javascript中的对象和数组符号[并以其命名]的文本数据格式)。这个问题的主要内容是关于Javascript语法的对象和数组符号。(作为其AJAX机制的一部分,jQuery将JSON格式的文本反序列化为适当的Javascript构造,从而进一步模糊这两个概念之间明显的“界线”,这没有帮助。)
$(document).ready(function() {  
    var resp = $.parseJSON('{"message":"hi"}');
    $('#button').click(function(event) {
        alert(resp.message);
    });
});