繁体   English   中英

AJAX xmlhttp.responseText

[英]AJAX xmlhttp.responseText

我已经绞尽脑汁了好几个小时,无法弄清楚为什么字符串比较不起作用。 在以下代码中,我进行了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; 
            }
    }
  }

好的,谢谢卢丝(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个字符的返回屏幕。 但是,在测量字符串长度时发现的是,它在未显示“ NOAD”之前将一个带有一些不可见字符的5字符串送回了屏幕,从而使比较器搞砸了。 我使用以下代码删除了字符,并且效果很好。

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

returnText = returnText.substring(1, returnlength);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM