AJAX 响应文本不匹配
AJAX responseText missmatch
我有一个 AJAX 电话:
var ajax = new XMLHttpRequest();
ajax.open("POST", "testing.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
var returnVal = ajax.responseText;
if(returnVal == "success"){
// Redirect
}else{
// Inform of failure
}
}
}
ajax.send("testing=1");
与以下 PHP 配对:
if(isset($_POST["testing"])){
$formScore = checkForm($db_conx);
if($formScore == 10){
echo "success";
exit();
}else{
echo "fail";
exit();
}
}
这很好用。表单分数应该是“10”,而发送回 AJAX 调用的值实际上是 "success"。至少,如果我打印出响应文本:
$('.output').html(ajax.responseText);
output
中的值是“success” - 单词前面有 space。我不能用我的光标 select space,但是当我查看页面的 HTML 时它就在那里。
但是,无论如何,行 if(returnVal == "success")
总是等同于 false。我什至试过 if(returnVal == " success")
,但仍然是错误的。
这是全部代码。我什至尝试过硬编码 $formScore = 10;
来查看是否是问题所在。不管怎样,出于某种原因,相等总是错误的。
有什么明显的我遗漏的东西吗?我已经测试了这 100 种不同的方法,结果仍然相同。
在您的 PHP 文件中有一个 space 导致了这个问题。可能在 <?php
之前的文件开头。
要解决此问题,您可以 trim 在以下情况下使用响应之前:
if (returnVal.trim() == "success") {
或者将您的 PHP 更改为 return JSON,并将标志设为 属性,这样白色 space 就不是问题了。
最好的解决方案显然是摆脱服务器端代码中的 space,但是如果没有看到您的 PHP.
,我们无法诊断该问题
您可以使用 jQuery trim
函数删除前导和尾随 space。
if($.trim(returnVal) == "success")
我有一个 AJAX 电话:
var ajax = new XMLHttpRequest();
ajax.open("POST", "testing.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
var returnVal = ajax.responseText;
if(returnVal == "success"){
// Redirect
}else{
// Inform of failure
}
}
}
ajax.send("testing=1");
与以下 PHP 配对:
if(isset($_POST["testing"])){
$formScore = checkForm($db_conx);
if($formScore == 10){
echo "success";
exit();
}else{
echo "fail";
exit();
}
}
这很好用。表单分数应该是“10”,而发送回 AJAX 调用的值实际上是 "success"。至少,如果我打印出响应文本:
$('.output').html(ajax.responseText);
output
中的值是“success” - 单词前面有 space。我不能用我的光标 select space,但是当我查看页面的 HTML 时它就在那里。
但是,无论如何,行 if(returnVal == "success")
总是等同于 false。我什至试过 if(returnVal == " success")
,但仍然是错误的。
这是全部代码。我什至尝试过硬编码 $formScore = 10;
来查看是否是问题所在。不管怎样,出于某种原因,相等总是错误的。
有什么明显的我遗漏的东西吗?我已经测试了这 100 种不同的方法,结果仍然相同。
在您的 PHP 文件中有一个 space 导致了这个问题。可能在 <?php
之前的文件开头。
要解决此问题,您可以 trim 在以下情况下使用响应之前:
if (returnVal.trim() == "success") {
或者将您的 PHP 更改为 return JSON,并将标志设为 属性,这样白色 space 就不是问题了。
最好的解决方案显然是摆脱服务器端代码中的 space,但是如果没有看到您的 PHP.
,我们无法诊断该问题您可以使用 jQuery trim
函数删除前导和尾随 space。
if($.trim(returnVal) == "success")