request.responseText接收正确的数据,但JavaScript无法理解

时间:2015-08-28 06:58:32

标签: javascript php ajax responsetext

我是AJAX的新手,现在从Head First AJAX学习它。我面临的问题真的很奇怪。我开发了一个简单的程序,通过JavaScript创建请求,然后显示输出。

main.js

window.onload = initPage;
function initPage() {
    request = createRequest();
    if(request == null) {
        alert("request could not be created");
    }
    else {
        var url = "requestMe.php";
        request.onreadystatechange = showResult;
        request.open("GET", url, true);
        request.send(null);
    }
 }

function showResult() {
    if(request.readyState == 4) {
        if(request.status == 200) {
            if(request.responseText == "okay") {
                alert("A successful request was returned");
            }
            else {
                alert("ALERT : " + request.responseText);
            }
         }
         else {
            alert("Request status received was not correct");
         }
    }
}

//--function to create request objects--
function createRequest(){
   try{
       request = new XMLHttpRequest();
   }
   catch(tryMS){
       try{
           request = new ActiveXObject("Msxm12.XMLHTTP");
       }
       catch(otherMS){
           try{
               request = new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch(failed){
               request = null;
           }
       }
    }
    return request;
}

现在,这是php脚本。

requestMe.php

<?php
   echo 'okay';
?>

此代码应提供警告 A successful request was returned

但它会提供结果 ALERT : okay

奇怪的是,当我尝试它时,昨天同样的代码正在为我工​​作,现在它正在给我这个结果。我试图创建类似的程序,他们都向我展示了这种奇怪的行为。收到的responseText是正确的,因为它会在 okay 之后附加 ALERT : 。我在代码中做了什么错?当收到的else是正确的时,为什么会转到responseText部分?

任何帮助?提前谢谢。

2 个答案:

答案 0 :(得分:0)

echo'okay'之后添加退出; ;

您的代码中的问题是在?&gt; 之后有空间,您可以通过删除?&gt; 或在之后删除额外空格来修复它? &GT;

我希望它能解决你的问题。

答案 1 :(得分:0)

我个人会通过以下方式使用jQuery's Ajax Function来完成它:

&#13;
&#13;
document.addEventListener("DOMContentLoaded", function()
{
  $.ajax({
    "url": "requestMe.php"  
  }).done(function(data)
  {
    if(data == "okay")
    {
      alert("A successful request was returned");
    } else
    {
      alert("ALERT : " + data);
    }
  }).fail(function()
  {
     alert("Connection Failed");
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

我还没有对这个剧本进行过测试,但理论上它应该可以很好地运作。