0
$.getJSON("../../index.php/churchlocator/base", function(data) {
    base_url = data.base;
}); 
alert(base_url);

上記のコードで base_url を getJSON 変数の外でアクセスできるようにするにはどうすればよいですか?

4

1 に答える 1

2

ここでの正解は、ajax 呼び出しの結果を参照するすべてのコードを、ajax 呼び出しの成功ハンドラーに配置することです。これにはグローバル変数を使用しないでください。

$.getJSON("../../index.php/churchlocator/base", function(data) {
    var base_url = data.base;
    alert(base_url);
    // or you may call some other function here and pass it the data
    myFunction(base_url);
}); 

Ajax 呼び出しは「非同期」です (これは Ajax の A の略です)。つまり、それらは将来いつか完了し、他の JavaScript は引き続き実行されます。完了すると、成功ハンドラーが呼び出されます。そのため、Ajax 呼び出しからデータが返されたことを知る唯一の方法は、成功ハンドラー内にコードを配置して返されたデータを操作するか、その成功ハンドラーから関数を呼び出してデータを渡すことです。

これは非同期プログラミングであり、何らかの非同期機能を使用してプログラミングする場合は、このモデルを使用する必要があります。非同期関数呼び出しで従来の順次プログラミングを使用することはできません。

于 2013-10-23T03:22:17.930 に答える