0

This seems really bizarre...

I have some JSON...

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

But when I try to parse it and use it with...

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

This is the user management view

Users : <p></p>

Nothing appears, but if I just do $("p").text(json); it tells me it's an object and I can see the JSON is correct in firebug, any ideas?

4

4 回答 4

7

尝试:

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

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

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

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

于 2012-04-17T17:46:37.370 回答
2

$.getJSON()函数只是一个 AJAX 调用的包装器;它不会返回由于 AJAX 调用而获得的 JSON,而是返回一个jqXHR对象(感谢 Mathletics 对此进行了澄清)。

您需要提供一个回调函数来对所需的 JSON 进行任何处理。

于 2012-04-17T17:47:26.323 回答
2

$.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方法不支持的错误回调。

于 2012-04-17T17:48:51.733 回答
1

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

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

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

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

于 2012-04-17T17:49:06.773 回答