2011-08-02 7 views
1

サーバサイド(PHP)のdurringとAJAXコールからリロードを開始する必要があります。どうすればいいの?私は正直言ってそれがサポートされているとは思わない。Ajaxコールでサーバサイドリロードを開始

私の現在の方法は、PHPのheader()関数を使用してAJAX呼び出しからresponseTextとして取得し、次にinnerHTMLを追加することです。

しかし、私の本には適切なリロードではありません。なぜなら、それはonload関数を意識しないからです。それはまた、 "きれいな"解決策ではなく、考案されているようです。

+0

'エコー「<メタHTTP-当量=は『リフレッシュ』コンテンツ=『0』>」' – Joe

答えて

2

は、ページ内の次のJavaScriptメソッドを呼び出す作るために戻ってあなたのAjaxハンドラへのコマンド/フラグを送信:

window.location.reload(); 
+0

私はリロードするJSに指示フラグを送信しますページ。それ以外の場合は、ページにスクリプトを挿入するか、スクリプトを挿入する必要があります。 – aepheus

+0

それは私がJavaScriptコマンドを意味するものです。 –

+0

これはどのようにあなたが尋ねたことをしませんか?それでもサーバーからフェッチする必要があります。唯一可能な問題は、ここにいくつかの提案がありますが、キャッシュの問題です:http://stackoverflow.com/questions/5721704/window-location-reload-with-clear-cache なぜドキュメント全体が必要なのでしょうかロードされた?より良い選択肢は、AJAX呼び出し、またはフォーマットされたHTMLからのデータを使用し、個々のDOM要素を再投入することです。 document.write() - ページ全体が非常に悪い、IMO –

1

PUSH-似たアプリケーションを作成するために、AJAXを使用したパターンがあります。私はパラダイムの実名も良い実装も分かりませんが、基本的にどのように動作するのでしょうか。

  1. クライアントはサーバーにAJAX要求を行います。
  2. サーバーは接続を閉じません。
  3. サーバーがプッシュしたいとき。サーバーは言う:
    a。プロセスプッシュメッセージX
    b。新しい接続を開始します。 (すなわち後藤1)
    <サーバーが接続を閉じる>

だから、すぐにサーバーが応答したいとそこに「ハング」の接続が常にあり、そして、クライアントはすぐにそのハング新しいものを作成し、再び。

+1

これはXHR long-pollingです。それはサーバープッシュを行うための多くのテクニックの1つです。 [link](http://en.wikipedia.org/wiki/Comet_(programming)) –

+0

私はこれがチャットアプリケーションなどともっと関連していると思います –

0

ページ全体をリロードする唯一の方法は、window.locationを変更することです。あなたはそれをサーバーから行うことはできません。すべてのアクションはクライアントから開始する必要があります。これはHTTPのような安らかなプロトコルの基本です。

しかし、サーバーはドキュメント全体を返信する可能性があります。その場合、置き換える部分を '選択'できます。 jQueryはload関数でこれを可能にします。これはBODYリロードう例えば

$('body').load('ajax/page.html body');

+0

私はJon Benedictoが正しい答えを持っていると言います。あるいは、サーバーはAJAX呼び出しでドキュメント全体を返すことができます。しかし、あなたがそれを受け取ったら、あなたが望む部分だけを取る - すべてではない。それが有用かどうかはわかりません。 –

関連する問題