2012-02-22 20 views
0

jqueryを使用してAjax経由でリクエストを処理する登録フォームを作成しています。 マイコード:ajaxとjqueryを使用してコンテンツを出力してリダイレクトする方法は?

$.ajax( 
{ 
    type: "POST", 
    url: "http://www.example.com/register.php", 
    data: $("#register-form").serialize(), 
    cache: false, 
    success: function(message) 
    { 
        $("#reg_notification").html(message).fadeIn(400);    
    }   
}); 

は今register.phpは、出力誤差は、たとえば、電子メールアドレスが有効ではないはずですいずれかであれば、これはdiv要素のreg_notificationに入れられます。エラーがない場合は、ユーザーを「ウェルカムページ」にリダイレクトする必要があります。しかし、言い換えれば、私はjqueryのコードでlocation.hrefを使用していますが、PHPで

header("Location: http://www.example.com") 

を使用することはできませんので、このページは、オールウェイズ、静的ではないことが重要です。問題は、ユーザーがリダイレクトされないことですが、www.example.comの内容はdiv reg_notificationの中に入れられます。

How to manage a redirect request after a jQuery Ajax callでも同様の問題が発見されましたが、違いは私のサーバーのために使用できないJSONを使用しており、PHPファイルではなくjavascript内でリダイレクトされている点です。

+0

PHPファイルにリダイレクトすることはできません。また、ブラウザもリダイレクトすることはできません。 ページ全体をリクエストの結果で置き換えることができます。 –

+0

お探しのサイトの例がありますか? –

+0

@phpheini確かに、あなたがリンクした質問を見てください。 – hakre

答えて

1

ヘッダーのリダイレクトは不可能です。

使用のようなもの:PHPで

... 
success: function(message) 
{ 
    $("#reg_notification").html(message) 
      .fadeIn(400, function() {window.location = "url"}); 
} 

または

success: function(response) 
{ 
    if (response.success) { 
      $("#reg_notification").html(response.message) 
       .fadeIn(400, function() {window.location = response.redirectTo; }); 
    } else { 
      // somethings else 
    } 
} 

header("Content-type: application/json"); 
echo json_encode(array(
    "success" => true, 
    "message" => "some message", 
    "redirectTo" => "my url" 
)); 

のXMLHttpRequestを透過的に取得するためのURLをリダイレクトするために、以下のため、UPDATE ヘッダが不可能にリダイレクト結果。 there

+0

最初の例では、エラーが発生しても常にリダイレクトされます。 2番目の例では、リダイレクトする場所をスクリプトにどのように伝えますか? – phpheini

+0

私はこれを試してみましたので、私は今、自分のサーバー上でJSONを持っていると私はそれが仕事をdoesntのなぜ取得いけない: '$アヤックス( \t { \t \tタイプ: "POST"、 \t \t URLを:「のhttp:// WWW。 example.com/register.php」、 \t \tデータ:$( "#登録フォームを")。(シリアライズ)、 \t \tデータ型: "JSON"、 \t \t成功:機能(データ、textStatus){ \t \t \t if(data.redirect){ \t \t \t \t window.location.replace(data。リダイレクト); \t \t \t} 他\t \t \t { \t \t \t \t $( "#1 signin_message")replaceWith(data.form)。 \t \t \t} \t} \t \t \t \t}); PHPで ' そして:'ヘッダ( "コンテンツタイプ:アプリケーション/ JSON")。 エコーjson_encode(配列( "成功" =>真、 "フォーム" => "いくつかのメッセージ"、 "リダイレクト" => "http://www.example.com" )); ' – phpheini

+0

第一歩console.log(data)を追加します。チェック結果..データ有効なJSONオブジェクトが次にtry window.location = data.redirect ... – komelgman

関連する問題