代码之家  ›  专栏  ›  技术社区  ›  yrb

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

  •  0
  • yrb  · 技术社区  · 6 年前

    我对php和javascript很陌生,我遇到了一些问题。 在我的php文件(即a.php)中,我键入如下代码:

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

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

    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>
    

    我想检查标签值是否“有效”,然后我编写了如下代码:

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

    但是,我无法打印“它有效!”,我试图回显另一个值(即回显“1”),当我打字的时候

    if (email == 1)
    

    它可以打印出“行得通!”。 有人知道为什么会发生这种情况吗?如果我想打印“Valid”,我应该怎么做?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Elvin Haci    6 年前

    如果警报电子邮件变量显示“Valid”,但(email==“Valid”)返回false,则表示返回的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!";