从ajax返回的ResponseText不等于php文本

时间:2012-10-08 16:39:11

标签: php javascript ajax logic responsetext

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

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

  

这很奇怪,因为当我打开数据变量时   它应该显示为“true”,但它只是没有显示   在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”.....

2 个答案:

答案 0 :(得分:1)

要进行调试,请尝试

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

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

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

          This empty line will be output directly
    <?php
^^^^ This whitespace will be output directly

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

如果你想将一个布尔值返回给JS,你应该简单地回显10,这样你就可以在接收Javascript中执行此操作:

if (data) {

答案 1 :(得分:0)

我知道这已经过时了,但是我遇到了完全相同的问题并且无法解决问题。我确定它不是白色空间问题,但我能够以不同的方式解决它。 也许它不是最好的方式(我仍然想知道为什么它不能以通常的方式工作),但我做的是回显0(假)和1(真实)

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

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

我希望我可以通过这种解决方法帮助任何人(但是一个好的解决方案会更好)