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

    私はAJAX呼び出しを実行しています。これはPHP関数のように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 
    

    私はjson_encode()なしエコーINGを試してみましたが、それはまだ私に同じ結果を与えるだろう。私は==を使用していましたが、===を使用する方が安全だと読んだので、それに切り替えましたが、それでもそれは真実を返しません。

    +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を介して受信したraw jsonは常に文字列になります。 –

    1

    あなたは、PHP側でusig json_encodeているなら、あなたはjavascriptの側に

    jQuery.parseJSONを使用する必要があります。

    html = jQuery.parseJSON(html);

    +0

    これは私のために働いてくれてありがとうございます。 – ybce

    関連する問題