2009-03-25 20 views
0

クライアントに知らせずにAjaxコールをリダイレクトする必要があります。Ajaxコール内でリダイレクト

getPage.phpは、特定のクエリに対してhtmlなどを返すアプリケーションです。

getPage.php?ハッシュ=面白い-記事タイトルgetPage.php?= 3ページには、同じことを返します。これらの両方をキャッシュすることからクライアントを回避するために

私はgetPage.phpをご希望ですか?getPage.phpにリダイレクトするハッシュ=面白い-記事タイトル?ページ= 3 PHPヘッダ301と場所を経由して。

これをやってみましたが、何も返しません。 ajax呼び出しはリダイレクトされたくないようです。

このダブルキャッシュの問題を解決できる人は誰ですか?

キャッシュ可能な301リダイレクトを使用したいと思います。このようにして、ハッシュ= insteresting-article-タイトルをフェッチするように指示されたとき、ブラウザはページ= 3を自動的に呼び出します。

コード例:

function handleInit(event) { 
     if (event.path != "/") { 
      var hash = event.path.replace(/\//,"").replace(/\?/g,""); 
      getPage(hash); 
      currentState.hash = hash; 
     } else { 
      currentState.id = 1; 
     } 
     SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange); 
    } 


    function chapter_forward() { 
     if (!freeze) { 
      freeze = true; 
      getPage(currentState.id - 1); 
     } 
    } 


    function ajax_data(id) { 
     return typeof(id) == "string" ? "hash=" : "page="; 
    } 

    function getPage(id) { 
     $.ajax({ 
      method: "get", 
      url: getPage.php, 
      data: ajax_data(id) + id.toString(), 
      dataType: 'json', 
      timeout: 2000, 
      error: function() { 
       $("#space-3").html('40104 - Request Timeout'); 
      }, 
      complete: function() {}, 
      success: function(result) { 
       handleContent(result); 
      } 
     }); 
    } 

私は、ユーザーが自分の前後に、ブラウザのボタンを使用していますHASHからIDを取得するので、私は、リダイレクトが発生する必要がある理由です。

ユーザーが前後にナビゲートするだけで、現在のIDに+1を追加するだけです。

{"article_id":"3","hash":"music-in-your-ear","title":"Music in your ear.","html":"Blah blah article 3","modified":"Fri, 20 Mar 2009 02:46:00 GMT"} 

ありがとう:

getPage.phpはこのような何かを返します!

+0

どこでAjaxを使用しますか?あなたのページ内のAjaxに次のページをロードするよう呼びかけているのですか、またはAjaxを使ってリダイレクトしようとしていますか?いくつかのサンプルコードがありますか? –

+0

いくつかのコード例を提供できますか? –

+0

私は質問を更新しました。 – Willem

答えて

1

this answerを参照すると、ブラウザの正しい動作は、クエリパラメータでURLをキャッシュしないことです。

基本的に同じURLにアクセスしているときに301リダイレクトが機能するかどうかはわかりません。

私はあなたのコードを通り、それらが同じものを返す場合にのみそれらのリンクの1つを使用することをお勧めします。

+0

私は本当に両方が必要でない場合は使用しません。 – Willem

1

Apacheを使用している場合、ハッシュが指定されたIDにマップされた定義済みのリストであると仮定して、このサーバー側を解決するには、mod-rewritesと書き直しマップファイルが最適です。

私はあなたがSEOの利点のためにこれをやっていると仮定していますか?

+0

実際に私はApacheを使用しており、あらかじめ定義されています。しかし、mod-rewriteにアイテムを追加するプロセスは、ユーザーがフォームを介して行うことができるように動的でなければなりません。 SEOを定義してください。ありがとう! – Willem

+0

検索エンジンの最適化 – NVRAM

関連する問題