-3

重複の可能性:
ajax/jquery 呼び出しからの成功関数の外部で変数を使用する

JSON クエリの外部で変数を取得しようとしていますが、成功しません。

$(document).ready(function(){
    $.getJSON("https://gdata.youtube.com/feeds/api/users/diasporaduo/uploads?v=2&alt=jsonc",function(json){

    videoid = json.data.items[0].id;
    });

    alert(videoid)
});

4

1 に答える 1

1

async フラグを使用できます。

非同期 (デフォルト: true)

型: Boolean デフォルトでは、すべてのリクエストは非同期に送信されます (つまり、これはデフォルトで true に設定されています)。同期リクエストが必要な場合は、このオプションを false に設定します。クロスドメイン リクエストと dataType: "jsonp" リクエストは、同期操作をサポートしていません。同期リクエストはブラウザを一時的にロックし、リクエストがアクティブな間はすべてのアクションを無効にする場合があることに注意してください。jQuery 1.8 以降、jqXHR ($.Deferred) で async: false を使用することは推奨されなくなりました。jqXHR.done() や非推奨の jqXHR.success() などの jqXHR オブジェクトの対応するメソッドの代わりに、成功/エラー/完了のコールバック オプションを使用する必要があります。

コード例は次のとおりです。

var videoid;
    $.ajax({
        url: 'https://gdata.youtube.com/feeds/api/users/diasporaduo/uploads?v=2&alt=jsonc',
        type: 'GET',
        async: false,
        success: function (json) {
            videoid = json.data.items[0].id;
        }
    });
    alert(videoid);

フィドラー: http://jsfiddle.net/5hE7n/

于 2013-01-21T19:47:30.923 に答える