Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX xmlhttp.responseText_Javascript_Ajax_Xmlhttprequest - Fatal编程技术网

Javascript AJAX xmlhttp.responseText

Javascript AJAX xmlhttp.responseText,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我绞尽脑汁想了几个小时,不明白为什么字符串比较不起作用。在下面的代码中,我执行了一个xmlhttp调用并得到一个响应文本。我得到一个调用的PHP文件返回正确的响应字符串NOAD,并且在测试中适当的时候显示NOAD。然而,当调用返回NOAD时,我想识别它,但是由于某些原因,在xmlhttp.responseText==comparisonText下面的调用中,它不能正确地比较这两个。为什么xmlhttp.responseText打印输出NOAD,但我不能在比较器中使用它 function load

我绞尽脑汁想了几个小时,不明白为什么字符串比较不起作用。在下面的代码中,我执行了一个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个字符的返回屏幕。但是在测量字符串长度时发现,它将一个5个字符的字符串发送回来,其中包含NOAD之前的一些不可见字符,而NOAD没有显示在屏幕上——因此,将比较器搞砸了。我用下面的代码删除了这个角色,效果非常好

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

returnText = returnText.substring(1, returnlength);

我不知道字符是什么,不管是我的PHP代码还是xmlhttp.responseText调用有问题,但是如果处理调用,需要注意一些事情。

{console.logxmlhttp.responseText;…打印NOAD?没有多余的空格或任何东西?验证了字符串长度?看到的ComparisContext中没有空格,并且xmlhttp.responseText不显示任何空格。我将尝试验证字符串长度以查看是否有任何隐藏字符,但它会在innerH中打印出来TML与PHP文件-NOAD完全相同。理论上,它应该与comparisonText匹配…我认为如果您更改了文件的编码,它可能是一个BOM字符。您可以实际跟踪它,使用headers\u sent函数-它会让您知道输出从何处开始。有两个想法:1您可能是able来修剪响应以删除隐藏/空白字符,从而修复比较操作。2您可以从PHP脚本返回非200状态查看NOAD状态的header函数,然后通过打开xmlhttp.status来处理该状态