に割り当てることはできません。 .ajax()関数? ありがとうございました。jQueryのアヤックス()のローカル変数は、私は次のようにjqueryのAjaxコードを持って
答えて
Ajaxが完了するまでに時間がかかるを完了するalert(global_arr); //get null, it doesn't work properly
実行前にあるためである
よくできました、ありがとう!興味深い。 – user2241859
これは特に非同期の最初の方法についてかなりのことを学びました。つまり、基本的にどのようにajaxメソッドが完了するのを待つかです。ありがとう。 – racl101
Ajaxは非同期です。 JSエンジンが機能していないalert()行に到達した時点で、AJAX呼び出しはまだサーバーからの応答を得て変数を設定する機会はありませんでした。
そのため、内部警告()が機能します。サーバーから応答が入ったときに実行されます。 $.ajax
が
。関数の実行にはほとんど時間がかかりません。だから、あなたがAjaxリクエストの外でアラートを受け取る頃には、Ajaxリクエストはまだ完了するのに時間を費やしています(送信中またはサーバー側のアクションのいずれか)。
いつでもajaxメソッドが完了するのを待つことができます。
$(document).ready(function() {
var global_arr = new Array();
var complete = false;//flag to wait for ajax completion
$.ajax({
url: 'result.php',
type: 'post',
dataType: 'json',
success: function(data) {
$.each(data, function(key, value) {
global_arr.push(value.name);
});
alert(global_arr); //get correct value, works fine
complete = true;//mark ajax as complete
}
}); //end of ajax function
(function runOnComplete(){
if(complete){//run when ajax completes and flag is true
alert(global_arr);
}else{
setTimeout(runOnComplete,25);//when ajax is not complete then loop
}
})()
});
ただし、最も一般的な方法はコールバックを使用することです。
$(document).ready(function() {
function runOnComplete(){//code executes once ajax request is successful
alert(global_arr);
}
var global_arr = new Array();
$.ajax({
url: 'result.php',
type: 'post',
dataType: 'json',
success: function(data) {
$.each(data, function(key, value) {
global_arr.push(value.name);
});
alert(global_arr); //get correct value, works fine
runOnComplete();//callback
}
}); //end of ajax function
});
私の提案は、これを3つのファンクションに分解することです。もう少し意味があります。 ajax、handelRequest、onCompleteが必要です。 また、エラーハンドラをajax関数に追加して、エラーが発生した場合は、スクリプトをユーザにロックアウトさせることもできます。
$(document).ready(function() {
var global_arr = new Array();
$.ajax({
url: 'result.php',
type: 'post',
dataType: 'json',
success: handelRequest(data),
error: handleError
});
function handelRequest(data) {
$.each(data, function (key, value) {
global_arr.push(value.name);
});
onComplete(global_arr); //get correct value, works fine
}
function onComplete(global_arr){
// then here you can do what ever you
// you would like with the array
alert(global_arr);
}
function handleError(){
// gracefully fail
}
})
ありがとう! – user2241859
- 1. jQueryの:私は、次のjQueryコードを持って成功メッセージ
- 2. はjqueryの文は次のように私はjQueryの文を持って
- 3. は、AJAXは:私は、次のJavaScript/jQueryのコードでウェブサイトを持っている
- 4. jQueryのラジオボタンは、私は次のようにラジオボタンのグループ持っているコード
- 5. どのように私は、次のHTML持ってjQueryの
- 6. jqueryのは、私は次のコードを持っているのdiv
- 7. jQueryのは - 私は、次のjQueryのコードを持っているMVCコントローラのアクション
- 8. は、私は次のコードを持っているjQueryのコールバック
- 9. jQueryのは、私は次のコードを持っている
- 10. ( ")私は次のコードを持っているはずのjQuery
- 11. 文字列は、私は、次のコードを持ってjQueryの
- 12. jQueryの$ .postは、私は次のjQueryコードを持っているブラウザのスタックオーバーフロー
- 13. jQueryの私はjQueryのコードに次の機能を持っている
- 14. 私は次のようなボタンを持っているjQueryの
- 15. 私は、次のコードを持っているアヤックス
- 16. jQueryのvalidateJsは、私は、次のjQueryの検証コードを持っている第一Ajax呼び出し
- 17. 私は、次のHTMLコードを持ってjQueryの
- 18. 私は、次のHTMLコードを持っているjQueryの
- 19. 私は、次のコードを持っているjqueryの
- 20. jQueryのaddClass、私は次のコードを持っている
- 21. がどのように私は私の選択は、私はHTMLの次のコード持っているのjQuery
- 22. 私は、ダイアログボックスの次のHTMLコード持ってjQueryの
- 23. は、私は次のjQueryを持ってjQueryの
- 24. jQueryのUI:私は次のコードを持っている唯一のjQuery
- 25. jQueryの私は、次のコード持っているID
- 26. は、私は次のコードを持っているjQueryを使ってテキストやチェックボックスの値の取得と変数
- 27. は、私は以下のjQuery Timepickerコードを持ってjQueryのtimepicker
- 28. は、私は私のページに次のASPXのコントロールを持っているjqueryの/アヤックス
- 29. jQueryの変数は、私はこのjQueryのコードを持っている私の文書の上部に
- 30. jQueryの成功は、私はPHPの次のコードを持っているコード200
私たちのお気に入りの質問は、非同期呼び出しです! – epascarello