2017-02-15 49 views
0

我有一種表單以註冊/登錄的模式方式工作。寄存器部分正常工作。但登錄部分有一個重定向問題...PHP AJAX重定向。 [help]

我在下面使用此代碼爲AJAX。我對有關windows.location的所有內容都進行了大量研究,但我不知道如何完全實現。

AJAX:

function logar(){ 

    $.ajax({ 
     method: "post", 
     url: "validalogin.php", 
     data: $("#login-form").serialize(), 
    success: function(data){ 

       alert(data); 
    } 

}); 
} 

PHP:我做,我之前和之後我試圖通過在用戶鍵入的銀行/數據的結果來創建會話認爲必要的檢查...

if ($result >1) { 
    session_name('nacional'); 
    session_start(); 
    $_SESSION['cpf']=$cpf; 
    $_SESSION['senha']=$senha; 


    header("Location: my_folder/index.php"); 

} 
  • 注意:標題標記未定位。我是否必須按照服務器返回ajax的「ok」的方式來執行某些操作,並且它會更改定位?如果是的話如何繼續?

感謝收聽。

+1

使用ajax時無法使用標題重定向 –

+0

爲什麼要在這裏使用ajax,而不是隻發佈到登錄腳本,如果您要立即重定向? – NotABlueWhale

+0

如果你想這樣做,你可以使用window.location的javascript重定向,如果它通過PHP的某個responseText語句。例如,在PHP中,如果結果大於1,則返回1,如果responseText == 1則返回javascript,重定向。 –

回答

0

您應該向您的JavaScript發送JSON響應,而不是返回標頭。標題在幕後重定向。做這樣的事情在你的PHP:

return json_encode(['success' => true]); 

然後抓住它在AJAX的你的成功方法。您還需要告訴您的AJAX期望JSON。把你的方法和URL參數後,如下所示:

function logar() { 
    $.ajax({ 
     method: "post", 
     url: "validalogin.php", 
     data: $("#login-form").serialize(), 
     dataType: 'json' 
    }) 
    .success(function(data){ 
     if (data.success == true) { 
      alert(data); 
      window.location.href = "folder/index.php"; 
     } 
    }); 
} 
+0

如果可能的話,我對這第二個代碼的看法有點困惑,你的幫助將是非常有效的。謝謝 –

+0

你快到了。在忘記「成功」之前忘記關閉括號。看看我的編輯版本的你的logar函數。我還修復了json_encode部分。它期望一個數組。 –

+0

令人難以置信,因爲它聽起來「返回」不起作用,我切換到「回聲」,它的工作。不管怎樣,謝謝你。他們是像你一樣有影響力的人。對不起,英文也是,我不是原生語言.... –

0

我還沒有能夠使窗體正常工作。我將在下面發佈如何獲取代碼。

FORM: I had to send via image due to the organization of the code

AJAX(這是相同的頁面形式。):

function logar(){ 

    $.ajax({ 
     method: "post", 
     url: "validalogin.php", 
     data: $("#login-form").serialize(), 
     dataType: 'json', 
    success: function(data){ 

     if (data.success == true) { 
      alert(data); 
      window.location.href = "folder/index.php"; 
      } 
     } 

}); 
} 

PHP:(我跳過上面的代碼的一部分,但它不會影響這裏操作)

 $sql = "SELECT * FROM aluno_login WHERE cpf = '$cpf' and senha ='$senha' "; 

      $result = mysql_query($sql, $conexao); 
       while($linha = mysql_fetch_row($result)) { 

        if ($result <1){ 
         unset ($_SESSION['cpf']); 
         unset ($_SESSION['senha']); 
         session_destroy(); 
         //echo "Algo deu errado, tente novamente !"; 
         //return json_encode('Error' => false); 

        } 
        if ($result >1) { 
         session_name('nacional'); 
         session_start(); 
         $_SESSION['cpf']=$cpf; 
         $_SESSION['senha']=$senha; 
         return json_encode('success' => true); 





        } 

應該這樣工作嗎?