0

これは本当に奇妙に思えます...

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);を実行するだけです。オブジェクトであり、FirebugでJSONが正しいことがわかります。何かアイデアはありますか?

4

4 に答える 4

7

試す:

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

jsonAJAXリクエストが完了した後、変数を操作する必要があります。

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後者は、rawメソッドがサポートしていないエラーコールバックを登録することもできるため、より柔軟性があります。

于 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 に答える