为什么在比较responseText时必须使用trim函数

时间:2016-02-22 11:07:55

标签: php ajax

在测试一些 Ajax PHP 代码时,我偶然发现了 AJAX create index问题。当我在没有responseText的情况下使用它时,函数注册(参见 js.js )内部的比较失败。我已经验证了php代码的响应是否不包含换行符(请参阅 registration.php )。

form.php的

trim()

js.js

<?php?>
<html>
  <head>  
    <script type="text/javascript" src=".js"></script>
  </head>
  <body>
    <div>
      <form>
        <div> 
          Name : <input type="text" id="name"><br />
          LastName : <input type="text" id="lastname"><br />

          <input type="button" value="send" onclick="registration()">                   
          <div id="message"></div>
        </div>
      </form>
    </div>
  </body>
</html>

为registration.php

function getRequestHttp()
{
  var requestHTTP;
  if(window.XMLHttpRequest)
  {
    requestHttp=new XMLHttpRequest();
    if(requestHttp.overrideMimeType)    
      requestHttp.overrideMimeType('text/xml'); 
  }
  return requestHttp;
}

function getDataForm() {
  var name,lastname,all;
  name = document.getElementById('name').value;
  lastname = document.getElementById('lastname').value;

  all = "name="+name+"&lastname="+lastname;

  return all;
}

function registration()
{  
  req.open('POST','inscription.php',false);
  req.setRequestHeader('Content-Type','application/x-www-form-
  urlencoded'); 
  req.send(getDataForm());
  if(req.readyState==4) 
  {
    if(req.status==200)
    {
      //alert(req.responseText);
      document.getElementById('message').innerHTML = "";

      if (req.responseText.trim()=="no") 
        document.getElementById('message').innerHTML = "already exists";
      else if (req.responseText.trim()!="no")
      {                 
        document.getElementById('message').innerHTML = "registration succeeded";                
      }
      else
        document.getElementById('message').innerHTML = "problem ";
    }
    else
      alert("Error :"+req.status+",wrong request");
  }
  return true;
}

1 个答案:

答案 0 :(得分:0)

因为有时候空间被连接在一起并且你的状况不符合你想要的。所以我们使用trim来避免结果两边的空白区域。假设我们从ajax请求得到了成功消息,我们写了这样的条件:

if(response.message == "success"){
//do this
}else{
//do this
}

所以在这种情况下,响应消息有时会附加一些空格,这就是我们使用trim的原因。

var response_msg = response.message;
if(response_msg.trim() == "success"){
//do this
}else{
//do this
}

这是我面临的整个情景。如果我错了,请纠正我。