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

JSON call returns [object Object] or undefined

本文关键字:object 未定义 调用 返回 JSON      更新时间:2023-09-26

非常初级的问题。试图学习JSON和有问题,获得适当的返回数据。我试图使用JSON返回错误从php表单使用json_encode($errs, JSON_FORCE_OBJECT),但首先我想使下面的工作非常简单的代码来理解JSON对象。

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

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!---CSS-->
    <link href="style/960.css" media="all" rel="stylesheet" type="text/css" />
    <link href="style/pubstyle.css" media="all" rel="stylesheet" type="text/css" />
    <!--- Javascript -->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" 
    type="text/javascript"></script>
    <script src="javascripts/form.js" type="text/javascript"></script>
    <script src="javascripts/validate.min.js" type="text/javascript"></script>
    <script src="javascripts/json2.js" type="text/javascript"></script>
    </head>
    <body>
    <script type="text/javascript">
         $(document).ready(function() {
             var resp = {"message":"hi"};
         $("a#button").click(function(resp) {
           alert(resp)
         });
         });
    </script>
    <a id="button" href="#">Button</a>
    </body>
    </html>

上面的代码返回一个带有"[object object]"的警告。当我将代码改为:

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

我得到一个"未定义"的警告。我试着把它放进一个数组对象

{ "messages": [ {"message":"hi"}]}

,用

resp.messages[0].message

调用它,没有运气。我尝试将内容类型更改为"应用程序/json"answers"文本/纯",但都不起作用。也试过

$(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回调函数接收点击事件对象作为它的参数。回调函数中的resp参数名称遮蔽了resp变量。