php 无法通过 innerHTML 在 javascript 中检查回显字符串

php echo string cannot be checked in javascript by innerHTML

我是 php 和 javascript 的新手,遇到了一些问题。 在我的 php 文件中(即 a.php),我输入如下代码:

<?php
...(checking sth in database)...
if($found == 0)
echo "Valid";
else echo "Not Valid";
?>

然后,在我的另一个 php 文件中,我将表单数据传递给 a.php 以检查数据库中是否有重复的记录,如果没有,它将打印 "Valid"在标签中通过 AJAX:

function ajax(str){
 var xhttp = new XMLHttpRequest;
    xhttp.onreadystatechange=function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("e").innerHTML = xhttp.responseText;
        }
    };
    var data = 'Email='+ str;
    xhttp.open("POST", "a.php" , true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send(data);
}

这是我的标签:

<label style="color: red;" id="e"></label>

我想检查标签值是否为"Valid",然后我写了这样的代码:

var email = document.getElementById("e").innerHTML;
if (email == "Valid")
    test.innerHTML = "it works!"; //test is another paragragh tag with id="test"

但是我无法打印 "it works!",我尝试回显另一个值(即回显“1”;),当我输入

if (email == 1)

可以打印出来"it works!"。 有谁知道为什么会这样,如果我想打印 "Valid" 应该怎么做?

如果警告电子邮件变量显示 "Valid" 但如果 (email=='Valid') returns 为假,则意味着您在返回的 AJAX 数据中有一些额外的字符。

所以,尝试用

删除它们
  • 关闭 a.php 中的 ?> 标签(或删除 ?> 标签后的空格)
  • 确保数据库检查部分不打印任何内容。
  • 您也可以使用替代方法来检查该条件。

比如你可以这样做:

//var email = document.getElementById("e").innerHTML;
//if (email == "Valid")
var email = document.getElementById("e").innerHTML;
if (email.indexOf("Not")==-1)
   test.innerHTML = "it works!";