2016-07-12 40 views
0

我知道有很多關於我的問題的答案,但我是新來的Ajax和JavaScript我希望有人指向我導致我的腳本失敗的問題。
我使用ajax根據此答案進行了登錄檢查Check if user logged in on ajax page change。當點擊提交按鈕時,該功能檢查用戶是否登錄。如果沒有,我想顯示警報,如果是,請繼續下一頁。
我的javascript:阿賈克斯登錄檢查不工作,並提交表格

$('#bookForm').submit(function(){ 
    $.ajax({ 
      url : '<?=BASE_URL?>user/logged.php', 
      success : function(response){ 
       if (response.logged == true) { 
        return true; 
       }else{ 
        alert('you need to log in'); 
        //e.preventDefault(); 
        return false; 
       } 
      } 
    }); 
}); 

我的PHP腳本來檢查,如果用戶登錄:

$response = array(); 

if(!isset($_SESSION['userId'])) { 

    $response['logged'] = false; 

}else{ 

    $response['logged'] = true; 

} 

$response = json_encode($response); 

echo($response); 

我是新來的JavaScript/AJAX,我不知道問題出在哪裏。該功能會返回未登錄用戶的警報,即使用戶已登錄。

+0

return json_encode($response);刪除'返回json_encode($響應); ' – RiggsFolly

+0

並且echo不需要大括號,所以'echo $ response;' – RiggsFolly

+1

您是否觀看過瀏覽器開發人員工具中的AJAX請求/響應?你有沒有在項目中包含jQuery庫?是否有任何錯誤報告?你在網絡服務器上運行這個嗎?你如何設置'BASE_URL'? –

回答

0

您必須在您的ajax調用中添加此選項:dataType:'json'

和echo json_encode($ response);沒有任何回報。

+0

我已經添加了dataType並刪除了返回值,但結果相同 - 總是爲false –

+0

您是否更改了php中由json編碼版本顯示的值? –

0

在您的Jquery代碼中進行以下更改。

$('#bookForm').submit(function(event){ 

event.preventdefault(); 

    $.ajax({ 

     url : '<?= BASE_URL ?>user/logged.php', 
     dataType:'json' 
     success : function(response){ 

      if (response.logged == true) { 
       return true; 
      } 
      else{ 
       alert('you need to log in'); 
       //e.preventDefault(); 
       return false; 
      } 
     } 
    }); 
}); 

取下PHP腳本

+1

這是一個好主意,補充說,但它不回答這個實際問題 – RiggsFolly

+0

爲什麼OP應該這樣做?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

表單未提交,但if語句始終爲false,無論用戶是否登錄 –