0

继承人的问题。我有一个 ajax 函数,它只是检查用户输入的电子邮件是否已被使用。

它使用的 php 脚本根据结果发送回“true”或“false”字符串。当我得到响应文本或下面函数中的“数据”变量时,看看它的 == 是否为“真”,它永远不会通过并且总是评估为假。

这很奇怪,因为当我在屏幕上打印出数据变量时,它应该显示为“true”,但在 if 语句中它只是不显示为等于“true”。不知道这里发生了什么。

阿贾克斯功能:

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”值.....

4

2 回答 2

1

对于调试,请尝试

if (data.replace(/\s+/g, '') == "true") {

<?php ?>...我的钱在标签外的空白处。请注意,如果这解决了问题,则不应考虑解决方案 - 真正的解决方案是从 PHP 脚本中删除额外的空格。

<开始标签的应该<?php是文件中的第一个字符。例如:

          这个空行会直接输出
    <?php
^^^^ 这个空格会直接输出

另请注意,结束?>标记通常是不必要的(在这种情况下似乎是这样),完全省略它可以帮助避免此类问题。

如果你想向 JS 返回一个布尔值,你应该简单地回显10,所以你可以在接收的 Javascript 中这样做:

if (data) {
于 2012-10-08T17:04:38.393 回答
0

我知道这很旧,但我遇到了完全相同的问题,无法解决。我很确定这不是空白问题,但我能够以不同的方式解决它。也许这不是最好的方式(我仍然想知道为什么它不能以通常的方式工作),但我所做的是回显一个 0(代表错误)和一个 1(代表正确)

然后我将数据解析为一个整数,所以我的代码如下所示:

function(data){
        var result = parseInt(data);
        if (result === 1){
             $('#loginresult').html('OK');
        } else {
            $('#loginresult').html('NOT OK');
        }

我希望我可以帮助任何人解决这个问题(但一个好的解决方案会更好)

于 2014-09-30T10:05:10.027 回答