gpt4 book ai didi

javascript - AJAX 响应文本不匹配

转载 作者:行者123 更新时间:2023-11-28 19:25:51 25 4
gpt4 key购买 nike

我有一个 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 调用的值实际上是“成功”。至少,如果我打印出响应文本:

$('.output').html(ajax.responseText);

output 中的值是“success” - 单词前面有空格。我无法用光标选择该空格,但当我查看页面的 HTML 时,它就在那里。

但是,无论如何,if(returnVal == "success") 行始终等于 false。我什至尝试过 if(returnVal == "success"),但仍然错误。

这就是全部代码。我什至尝试过硬编码 $formScore = 10; 来看看这是否是问题所在。无论如何,由于某种原因,相等总是错误的。

我是否遗漏了一些明显的东西?我已经测试了 100 种不同的方法,但结果仍然相同。

最佳答案

您的 PHP 文件中的某个空格导致了此问题。可能在 <?php 之前的文件开头。

要解决此问题,您可以在条件中使用响应之前 trim 响应:

if (returnVal.trim() == "success") {

或者更改您的 PHP 以返回带有标志作为属性的 JSON,这样空格就不会成为问题。

显然,最好的解决方案是删除服务器端代码中的空格,但是如果不查看您的 PHP,我们就无法诊断该问题。

关于javascript - AJAX 响应文本不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27897851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com