質問

こちらは非常に簡易プロトタイプの一例です。

ではでは、画面負荷は、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通話は非同期。

このためにも行われていると、なぜかその混乱くれた。

  1. ページ。
  2. のAjax請求get-table.php されます。
  3. にclick1()内に応えてヘッダを作成します。ているアラートをdivしてます。
  4. に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作品があるのかもしれによるライブラリーを使用して表示する項目を選択できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top