【发布时间】:2012-10-08 16:39:11
【问题描述】:
这就是问题所在。我有一个 ajax 函数,它只是检查用户输入的电子邮件是否已被使用。
它使用的 php 脚本根据结果返回“true”或“false”字符串。当我返回响应文本或以下函数中的“数据”变量时,看看它的 == 是否为“真”,它永远不会通过并且总是评估为假。
这很奇怪,因为当我打印出数据变量时 屏幕它应该显示为“真实”,但它只是没有显示 等于 if 语句中的 "true"。不知道发生了什么 在这里。
AJAX 功能:
function check_email() {
var email = document.sign_up_form.email_first.value;
document.getElementById("email1").innerHTML = ' <img src="loading.gif" width="15">';
$.ajax({
type: "GET",
url: "java_check_email.php",
data: "email="+email,
success: function(data){
if(data == "true"){
document.getElementById("email1").innerHTML = ' <img src="check.png" width="15">';
document.getElementById("email4").innerHTML = '';
}
else {
document.getElementById("email1").innerHTML = ' <img src="xmark.png" width="15">';
document.getElementById("email4").innerHTML = 'Email is already in use<br>';
}
}
});
}
更新:
PHP 脚本如下所示
<?php
include('functions.php');
$email = $_GET['email'];
$query_check = "removed for obvious reasons...";
$result_check = mysql_query($query_check);
if(mysql_num_rows($result_check) == 0){
echo 'true';
}
else{
echo 'false';
}
?>
此外,在收到 ajax 响应时调用 console.log(data) 后,我在 js 控制台中得到了“true”值.....
【问题讨论】:
-
php长啥样,
console.log(data);给你什么? -
你确定 data 实际上是一个字符串吗?你在做回声“真”吗?在您的 php 脚本中或 echo true;?
-
要调试,请尝试
if (data.replace(/\s+/g, '') == "true") {。我的钱在<?php ?>标签之外的空白处。此外,如果你想将布尔值返回给 JS,你应该简单地回显1或0,所以你可以这样做if (data) {(但你仍然需要解决空格问题,然后才能工作)跨度> -
编辑后,确保打开
<?php标记的<是文件中的第一个字符,还要确保如果您的编辑器使用 UTF-8,则将其设置为使用 UTF-8 无 BOM。完全删除结束?>标记,因为它不是必需的。 -
尝试将
cache:false添加到您的 ajax 请求选项中。您的 XHR 可能会被浏览器以旧值缓存。
标签: php javascript ajax logic responsetext