2014-10-02 81 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"';