javascript
  • php
  • jquery
  • ajax
  • 2016-07-04 144 views 0 likes 
    0

    我正在運行一個AJAX調用,它有一個成功的函數,它接受像這樣從php頁面返回的變量。Javascript/PHP字符串相等

    AJAX:

    $.ajax ({ 
        type: "POST", 
        url: "loginrequest.php", 
        data: 'username=' + username + '&password=' +pass, 
        success: function(html){ 
         console.log(html); // returns login 
         console.log(typeof html); // returns string 
         console.log(html === "login"); //returns false 
    
         if(html === 'login'){ 
          window.location.href = 'index.php'; 
         } 
         else if(html === 'false'){ 
          alert("login failed"); 
         } 
        } 
    }); 
    

    PHP:

    if($count == 1){ 
        $_SESSION['user'] = $myusername; 
        $return = "login"; 
        echo json_encode($return); 
    } 
    else { 
        $return = "false"; 
        echo json_encode($return); 
    } 
    

    正如你可以看到,我想實現簡單的登錄頁面,然後將用戶重定向或顯示這取決於成果警報從我的數據庫查詢返回的行數。

    我不明白這是:

    console.log(html); // returns "login" 
    console.log(typeof html); // returns string 
    console.log(html === "login"); //returns false 
    

    我嘗試回聲ING沒有json_encode(),它仍然會給我同樣的結果。我正在使用==,但後來我發現使用===更安全,因此我切換到了該選項,但它仍然不會返回true。

    +2

    要解決眼前的問題,請嘗試'的console.log(html.trim()=== 「登錄」);'。 'trim()'在處理純文本時刪除可以附加到響應中的額外空白。作爲一種改進,返回JSON來完全避免這個問題。 –

    +2

    'json_encode'在字符串中加上''',所以你實際上用引號括起來''login''看一看:[https://eval.in/600312](https://eval.in/600312 ) – FirstOne

    +2

    生成的'json'的快速'var_dump'會很容易地顯示出問題;) – FirstOne

    回答

    4

    你發送JSON,這意味着你要發送的文字字節:

    "login" 
    "false" 
    

    注意引號在那裏。你的JS代碼或者需要到JSON解碼,或比較原始JSON本身:

    result = JSON.parse(html) 
    if (result == "login") 
    

    if (html == '"login"') // note the quotes 
    

    一個簡單的console.log(html)會顯示你你處理什麼用。

    +4

    從問題來看,op確實運行了'console.log(html); //返回「login」',但它們可能認爲這是控制檯顯示字符串的方式...... xD – FirstOne

    +0

    解碼JSON對我有幫助,謝謝 – ybce

    +0

    json是一個字符串,簡單明瞭,就是它的全部要點。轉換爲一個簡單的字符串進行傳輸。通過http接收的原始json將始終是一個字符串。 –

    1

    如果你是在PHP端USIG json_encode那麼你應該對JavaScript端使用

    jQuery.parseJSON

    html = jQuery.parseJSON(html);

    +0

    對我而言,謝謝。 – ybce

    相關問題