1

次のコードがあります。

var dat = null;

$.get("example.com", function(data){
    dat = data;
    alert(dat); // Has the info.
});

alert(dat); // null.

どうすればdat屋外にアクセスできます$.getか?

4

2 に答える 2

2

その変数へのアクセスは正常に機能するはずです。問題は、dat を設定する関数が最後のアラートの後に実行されることです。

関数はコールバックです。get が完了した後にのみ実行されますが、最後のアラートはすぐに実行されます。

コールバックの後にコードをチェーンする方法は次のとおりです

var dat = null;

$.get("example.com", function(data){
    dat = data;
    alert(dat); // Has the info.
}).then(function() {
   alert(dat); // Has the info too.
});
于 2013-06-24T03:02:17.517 に答える
0

ラインアラート(データ); 非同期のため、 $.get() の前に実行されます。async:false で $.ajax() を使用するか、alert(data) を $.get() の成功に置きます。

$.ajax({
    type: "GET",
    async: false,
    url: "example.com",
    success: function(data) {
           dat = data;
           alert(dat);
    },
    error: function(e) {
        console.log(e); //error
    }
});
于 2013-06-24T03:08:23.523 に答える