Javascript handling JSON

Javascript handling JSON

本文关键字:JSON handling Javascript      更新时间:2023-09-26

这看起来真的很奇怪...

我有一些JSON...

{"firstName":"David","lastName":"Smith","email":null,"id":0}

但是当我尝试解析它并将其与...

<script>
    $(document).ready(function() {
        var json = $.getJSON('userManagement/getUser');
        $("p").text(json.firstName);
    });
</script>
This is the user management view
Users : <p></p>

什么都没有出现,但是如果我只是做$("p").text(json);它告诉我它是一个对象,我可以看到JSON在Firebug中是正确的,有什么想法吗?

尝试:

<script>
    $(document).ready(function() {
        $.getJSON('userManagement/getUser',function(json){
            $("p").text(json.firstName);
        });            
    });
</script>

您必须在 AJAX 请求完成后使用 json 变量。

在此处了解有关 AJAX JSON 请求的更多信息:http://api.jquery.com/jQuery.getJSON/

在此处了解有关常规 AJAX 请求的更多信息:http://api.jquery.com/jQuery.ajax/

$.getJSON()函数只是 AJAX 调用

的包装器;它不返回作为 AJAX 调用结果而获得的 JSON,而是返回一个 jqXHR 对象(感谢 Mathletics 澄清这一点)。

您需要提供一个回调函数来执行所需的 JSON 处理。

$.getJSON()是异步的 - 它不返回 JSON。

您需要提供回调函数,使用:

$.getJSON(url, callback);

var jqxhr = $.getJSON(url);
jqxhr.done(success_callback); // will be passed the JSON
jqxhr.fail(error_callback);   // will be called if there's an error

后者更灵活,因为您还可以注册原始$.getJSON方法不支持的错误回调。

您需要使用回调函数,因为您以异步方式检索数据。

调用$("p").text(json.firstName);的那一刻,JSON 尚未加载。

这就是为什么你必须使用:

$.getJSON('userManagement/getUser',function(json){...your code here... }<-callback