AJAX xmlhttp.responseText

时间:2015-07-01 21:47:07

标签: javascript ajax xmlhttprequest

我已经绞尽脑汁几个小时了,无法弄清楚为什么字符串比较不起作用。在下面的代码中,我执行xmlhttp调用并获取响应文本。我收到调用的PHP文件正在返回正确的响应字符串"NOAD",并且在我的测试中正在显示NOAD。但是,当系统返回NOAD时,我想识别它,但由于某种原因,在xmlhttp.responseText == comparisonText以下的调用中,它没有正确地比较两者。为什么xmlhttp.responseText打印输出NOAD但我不能在比较器中使用它?

function loadXMLAdImage1Doc(currentScenarioTime)
{

var returnText = "Not Here";
var comparisonText = "NOAD";

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
{


    if (xmlhttp.responseText == comparisonText) 
       {
            document.getElementById("AJAXTEST").innerHTML =returnText;
       } else  {

            document.getElementById("AJAXTEST").innerHTML =xmlhttp.responseText; 
            }
    }
  }

1 个答案:

答案 0 :(得分:0)

好的,谢谢Luth指出我正确的方向。我解决了我的问题,但我不确定xmlhttp.responseText中的问题是什么,或导致它的用户错误。

我的PHP文件中的返回文本是在返回的字符串之前放置一个看不见的字符(在测试中,我会认为它在结果之前是一个不可见的字符,但是去图)。从理论上讲,这不应该发生......我的PHP正在返回一个简单的字符串:

..do some MYSQL queries..
$AdLink = mysql_result($result, 0);

if ($AdLink == "") {

echo "NOAD";
} else
{
echo $AdLink;
}

因此PHP文件应该向名为“NOAD”的xmlhttp.responseText调用发送一个4字符的返回屏幕。但是在测量弦长时发现的是,它发送了一个5字符的字符串,其中有一些隐形字符BEFORE“NOAD”没有出现在屏幕上 - 因此搞砸了比较器。我使用以下代码删除角色,它完美地工作......

returnText = xmlhttp.responseText;
var returnlength = returnText.length;

returnText = returnText.substring(1, returnlength);

我不知道该字符是什么,无论是我的PHP代码还是xmlhttp.responseText调用的问题,但是如果你正在处理这个调用的话需要注意。