問題へのアクセスコンテンツの一部がコンテンツからAjaxコ
-
09-06-2019 - |
質問
こちらは非常に簡易プロトタイプの一例です。
ではでは、画面負荷は、ajax通話着一部のhtmlへのdiv.
<html>
<head>
<script type="text/javascript" src="scriptaculous/lib/prototype.js"></script>
<script type="text/javascript">
Event.observe(window, 'load', function(){
new Ajax.Request('get-table.php', {
method: 'get',
onSuccess: function(response){
$('content').innerHTML = response.responseText;
//At this call, the div has HTML in it
click1();
},
onFailure: function(){
alert('Fail!');
}
});
//At this call, the div is empty
click1();
});
function click1(){if($('content').innerHTML){alert('Found content');}else{alert('Empty div');}}
</script>
</head>
<body><div id="content"></div></body>
</html>
この混乱のコンテキストの試作品を理解し、div実際に実行したものです。
を見れば応えてヘッダを作成のajax通話だがその時点$("コンテンツ").innerHTMLはのものです。
しかし私がチェック$('コンテンツ').innerHTML直後のajax通話できます。
これはいくつかの基本的な誤解った。誰にも気を説明しですか?
編集
ったのか、を明らかに。このAjax通話は非同期。
このためにも行われていると、なぜかその混乱くれた。
- ページ。
- のAjax請求get-table.php されます。
- にclick1()内に応えてヘッダを作成します。ているアラートをdivしてます。
- にclick1()の後にAjax通話などが挙げられる。ているアラートの本部長は空になります。
このようなコードが実行の順で記述は、DOMな更新と同じです。
編集2 その答えはこのコードに応えてヘッダを作成するに正しい場所です。
別の場合を考えるのがに変わりはありませんAjax通話をしてもAjax通話に応えてヘッダを作成の最初の呼び出しのようになります:
new Ajax.Request('foo.php',{
method: 'get',
onSuccess: function(response){
doAnotherAjaxCall();
}
});
function doAnotherAjaxCall(){
new Ajax.Request('foo.php',{
method: 'get',
onSuccess: function(response){
//Anything that needs to happen AFTER the call to doAnotherAjaxCall() above
//needs to happen here!
}
});
}
});
解決
最初の文字のAJAXは"非同期".このAJAX通話を行う背景には、のAJAX請 すぐに返します.このコードの直後に開ける必要がありますので、実際に実行され 前 に応えてヘッダを作成ハンドラが呼び出され(前AJAX要求にも終了しました).
考慮して編集ご質問お使いのブラウザによっては、例えばFirefox)アラートボックスなどのモーダルなどされる方も多いと思います。非同期コードをポップアップして、アラートボックスの場合でももう一つは既にオープン。その場合は、新しいアラートボックスから、非同期コード)が画面上部に表示されるのです。このような錯覚に非同期コードでも実行されます。
他のヒント
なしコード:のAJAXが実行され非同期.ることを意味だが)。請求火災、それにともなうclick1()を呼び出することが分かるので、divは空になります。この点に関連して、そのAjaxの要請が完了し、コンテンツは実際のdiv.この点に応えてヘッダを作成機能を実行できないものはなく、内容るかもしれません。
このAjax通話は、非同期。その直後にその依頼、回答がなに戻ってことになるのはなぜ$("コンテンツ")は空です。
に応えてヘッダを作成要素の関数の呼び出しに対する対応のAJAXが実行時に応答を受け取りからget-table.php.でJavascript機能を使いのブラウザを呼び出すと、回答が得らからget-table.php.以下のコードはおAJAX.請にアクセスなどのAJAX.請求の呼び出しを実行しますが、必ずしも前get-table.php が呼び出されます。そんなわけでもあると思いますが、ビットの基本的な誤解がどのようAJAX作品があるのかもしれによるライブラリーを使用して表示する項目を選択できます。