2016-10-24 24 views
0

私はPHPで非常に新しいです。私は検索し、他のサイトと同様に他のサイトで多くのソリューションを見つけたので、この質問に重複してマークしないでください。私login.phpに私がやろうとしていることcontroller.phpするためにいくつかのデータを渡すことです:私はので、「index.phpを」別のページに移動したくない場合はうまく機能しているheader()in phpが動作しません

window.onload = function(){ 
$('#btnLogin').click(function() { 
var val1 = $('#txtusername').val(); 
var val2 = $('#txtpassword').val(); 
var val3 = "login"; 
$.ajax({ 
    type: 'POST', 
    url: 'controller.php', 
    data: { action: val3, username: val1, password: val2 }, 
    success: function(response) { 
    alert(response);  
    } 
}); 
}); 
} 

controller.php login.phpから渡されたすべてのデータを受信しましたが、ヘッダ( "Location:index.php")が動作していません.Bellowは私のcontroller.phpです:

私は "空白を削除"、 "error_reporting(E_ALL)"、 "ini_set( 'display_errors'、 'On') 'や' ob_start() 'をcontroller.phpの先頭に追加しました。ファイル、しかし何も起こりません。

+0

開かれた '<?php'タグの前に空白がありますか、またはその_" controller "_ fileを入れる前に他のファイルからの出力がありますか?もしそうなら、ヘッダーは既に送信されているので、設定することはできません。また、ファイルにPHPコードのみが含まれている場合は、閉じる '?>'タグを省略することをお勧めします –

+0

ajax呼び出しを使用してリダイレクトしようとしていますか? –

+2

あなたのJavaScriptで 'window.location.replace(" your_url ");'を使う必要があります – Khaled

答えて

2

あなたはajaxリクエストでこれを行うことはできません。 controller.phpを介してデータを処理した後にindex.phpに移動する場合は、成功応答内でjqueryリダイレクトを使用します。

success: function(response) { 
    window.location.replace("index.php"); 
} 
+0

Mahfuzul Alam:以前はあなたのソリューションを試しましたが、それはうまくいきましたが、応答がHTMLページです。私は単にlogin.phpにecho "OK"を使用して応答を送り返したいと思います。 「OK」をクリックすると、login.phpはHTML応答テキストを受信しました。応答テキストから「OK」のみを受け取ることは可能ですか? – user2905416

+0

確かに「OK」という回答を得ることができます。 '<?php return 'OK'; ?> ' –

0

あなたはajaxリクエストでリダイレクトを行っています。これはあなたのページをリダイレクトしません、それはajaxリクエストのみをリダイレクトします。代わりに、いくつかのjsonレスポンスを返し、ajaxコールバックでこのレスポンスを確認し、javascriptを使用してユーザーをリダイレクトします。

関連する問題