1

html5を使用してWebページを作成しています。問題は、URLからjsonを取得し、その結果をコンソールに出力していることです。関数で期待どおりの結果が得られていますが、関数の外では得られていません。変数がグローバルであっても。次のコードを参照してください

<script src="jquery-1.8.3.min.js"></script>

<script>
$(document).ready(function(){
    var result;
    $.ajax({
        type: 'GET',
        url: 'http://192.168.1.5:3333/abc.json',
        async: false,
        jsonpCallback: 'jsonCallback',
        contentType: "application/json",
        dataType: 'jsonp',
        success: function(data) {
            //var result = $(this).html(JSON.stringify(data));
            //console.log(JSON.stringify(data));
            result = JSON.parse(JSON.stringify(data));
            console.log(result); // Result : 1
        },
        error: function(e) {
            alert(e.message);
        }
    });

   console.log("here::"+result); // Result : 2
});
</script>

私は次のように結果を得ています

    2  here:undefined
    1    object                     (json)

解析にはこのjsonが必要です。

4

1 に答える 1

3

ドキュメントはこれについて非常に明確です:

クロスドメインリクエストとdataType:「jsonp」リクエストは同期操作をサポートしていません。

基本的に、それはあなたasync: falseがまったく使用されていないことを意味し、それが振る舞いを説明します。

参照:jQuery.ajax()

于 2012-12-28T13:35:50.000 に答える