$.get によって返されたデータを alert() しようとしている、またはより正確に var データに割り当てようとしています
var data = [];
function outside(text) {
data.push(text);
}
$.get( "../../services/content/test.php", function( content ) {
outside(content);
});
alert(data);
$.get によって返されたデータを alert() しようとしている、またはより正確に var データに割り当てようとしています
var data = [];
function outside(text) {
data.push(text);
}
$.get( "../../services/content/test.php", function( content ) {
outside(content);
});
alert(data);
Ajaxalert
リクエストから結果を取得する前に呼び出されます。alert
inコールバックを実行$.get
すると、出力が利用可能になるため、次のようになります。
$.get( "../../services/content/test.php", function( content ) {
outside(content);
alert(data);
});
これは、非同期リクエストの通常の動作です。
Ajax 呼び出しは非同期であるため、アラートを出したときにデータに値が含まれているという保証はありません。コールバックでデータをアラートしてみてください。
var data = [];
function outside(text) {
data.push(text);
}
$.get( "../../services/content/test.php", function( content ) {
outside(content);
alert(data);
});
現在、コードは次のように実行されます。
var data = [];
function outside(text) {
data.push(text); //4. result is pushed to array.
}
//1. Ajax call is made
$.get( "../../services/content/test.php", function( content ) {
outside(content); //3. Ajax call returns and outside function is called
});
//2. data is alerted
alert(data);
Ajax レスポンスがアレイにプッシュされる前に、アレイにアラートが送信されていることがわかります。
これを試して、
var data = [];
function outside(text) {
data.push(text);
alert(data);
}
$.get( "../../services/content/test.php", function( content ) {
outside(content);
});
$.get は非同期であることを意味し、ブラウザは次の行の実行が完了するまで待機しません
デフォルトでは、jQuery はサーバーへの非同期呼び出しを実行し、引数として渡したコールバック関数に結果を送信します。data
これにより、サーバーがリクエストに応答し、コンテンツが変数にプッシュされる前に、アラートが発生します。
もう 1 つ考えるべきことは、関数に不要なラッパー関数を作成することですoutside
。outside
が一般的な関数ではなく、その方法でのみ使用するための固有の場合は、ラップする必要はありません。単純に 2 番目の引数として渡します。
var data = [];
function outside(text) {
data.push(text);
alert(data);
}
$.get( "../../services/content/test.php", outside);