2014-10-02 84 views
0

我用一段代碼檢查函數是否返回等於另一個字符串的字符串時出現問題。這個問題聽起來微不足道,但我似乎無法得到它的工作。Javascript字符串比較錯誤

這裏是代碼,並確保你在我需要更多的代碼時大叫我。

<script> 

    function emptyElement(x){ 
     _(x).innerHTML = ""; 
    } 

    function login(){ 

     var e = _("email").value; 
     var p = _("password").value; 

     if(e == "" || p == "") { 
      _("status").innerHTML = "Fill out all of the form data"; 
     } else{ 
      _("loginbtn").style.display = "none"; 
      _("status").innerHTML ='please wait...'; 
      var ajax = ajaxObj("POST", "index.php"); 
      ajax.onreadystatechange = function() { 
      if(ajaxReturn(ajax) == true) { 
        document.write(ajax.responseText); // returns "login_failed" when I try it 
        if(ajax.responseText == "login_failed"){ 
         _("status").innerHTML = "Login unsuccessful, please try again."; 
         _("loginbtn").style.display = "block"; 
        } else { 
         //window.location = "afterlogin.php?u="+ajax.responseText; 
      }   


     } 
    } 
    ajax.send("e="+e + "&p="+p); 

     } 
    } 

    </script> 

window.location函數被註釋掉以用於測試目的。別介意那個。下面,我將發佈使用的兩個腳本「main」和「ajax」的代碼。

function ajaxObj(meth, url) { 
     var x = new XMLHttpRequest(); 
     x.open(meth, url, true); 
     x.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     return x; 
    } 
    function ajaxReturn(x){ 
     if(x.readyState == 4 && x.status == 200){ 
       return true; 
     } 
    } 

而對於main.js

function _(x){ 
     return document.getElementById(x); 
    } 

我不想邀功的原代碼的代碼;它是從developphp.com收集的,只是略有改動。

的問題是,因爲我已經註釋,行

ajax.responseText == "login_failed" 

似乎永遠是真實的,不管我怎麼做。這是我需要指導的。

問候

+1

您是否嘗試過'ajax.responseText.indexOf( 「login_failed」)> -1'? – 2014-10-02 22:12:44

+2

做console.log(ajax.responseText)來檢查它包含的內容。可能會附加/附加一些空白。如果是這樣的話,試試如果(ajax.responseText.trim()=='login_failed').... – HaukurHaf 2014-10-02 22:12:47

+0

你是否在控制index.php?如果發生登錄錯誤,它究竟打印了什麼?你有沒有嘗試過'ajax.responseText.trim()=='login_failed''? – TheWolf 2014-10-02 22:13:14

回答

0

太晚了答案,但有人可能有同樣的問題。

你需要寫

ajax.responseText == '"login_failed"';