Javascript 未捕获类型错误:字符串不是函数

Javascript 未捕获类型错误:字符串不是函数,javascript,php,Javascript,Php,我正在尝试创建一个登录部分,该部分应包含电子邮件id/电话号码和密码,并检查数据库。简单的说,我得到了一个TypeError,它在行中声明“string不是函数”- if ($e_check!=0) { 以下代码的名称: <?php if (isset($_POST['username']) && isset($_POST['password'])) { include_once("db_conx.php"); $u = $_POST["usernam

我正在尝试创建一个登录部分,该部分应包含电子邮件id/电话号码和密码,并检查数据库。简单的说,我得到了一个TypeError,它在行中声明“string不是函数”-

if ($e_check!=0) {
以下代码的名称:

  <?php
if (isset($_POST['username']) && isset($_POST['password'])) {
    include_once("db_conx.php");
    $u = $_POST["username"];
    $p1 = $_POST["password"];
    $p = md5($p1);
    if ($u!=""){
        if (is_numeric($u)) {
            $sql = "SELECT * FROM users WHERE phone='$u' AND password='$p' LIMIT 1"; //check against phone numbers
            $query = mysqli_query($con, $sql);
             $result = mysqli_result($query);
        $e_check = mysqli_num_rows($result);


            //var_dump($e_check);
             if ($e_check != 0) {
                echo "Success!";
                exit();
            }
            else {
                echo "Password is incorrect";
                exit();
            } 
        }

        else {
            $sql = "SELECT * FROM users WHERE email='$u' AND password='$p' LIMIT 1"; //check against email
            $query = mysqli_query($con, $sql);
             $result = mysqli_result($query);
        $e_check = mysqli_num_rows($result);

            var_dump($e_check);
             if ($e_check != 0) {
                echo "Success!";
                exit();
            }
            else {
                echo "Password is incorrect";
                exit();
            } 

        }
    }
}

?>

<html>
<head>
<meta charset="UTF-8">
<title>Sign In</title>

<script src="ajax.js"></script>

<script type='text/javascript'>

function login(){
    var username = document.getElementById("username").value();
    var password = document.getElementById("pwd").value();
    var status = document.getElementById("status");
    if (username=="" || password == "") {
        status.innerHTML = "Email/Phone or Password is missing";
    }

    else {
        status.innerHTML = "Please wait...";
        var ajax = ajaxObj("POST", "index2.php");
        ajax.onreadystatechange = function() {
            if(ajaxReturn(ajax) == true) {
                if(ajax.responseText != "Success!"){ ///returned from php file
                    status.innerHTML = ajax.responseText;

                }
                else {
                    //alert("Logged in");
                    //do nothing
                }
            }
        }
       ajax.send("username="+username+"&password="+password); //shoots variable to php 

    }

}
</script>
</head>
<body>
<div id="pageRight">
    <form id="sign-up" onSubmit="return false;">
        Email/Phone: <input type="text" id="username" >
        Password: <input type="password" id="pwd">
        <button id="signin" onClick="login()" style="background-color:#9C092B; color: white; padding: 9px 15px">Sign In </button><br>
        <span id="status" style="color: red"></span>
    </form>
</div>
</body>
</html>

您需要在语句中使用空格(在if语句的两种情况下都有空格),这是一种糟糕的形式-

if ($e_check != 0) {

然而,这不可能像其他人指出的那样是你的问题。TypeError问题是JavaScript问题,而不是PHP问题。您创建的语句将在PHP中工作。

您需要在语句中使用空格(在if语句的两种情况下都有空格),它只是一种糟糕的形式-

if ($e_check != 0) {

然而,这不可能像其他人指出的那样是你的问题。TypeError问题是JavaScript问题,而不是PHP问题。您创建的语句将在PHP中工作。

您需要一个结果来获得num\u行计数。使用以下命令:

        $sql = "SELECT * FROM users WHERE phone='$u' AND password='$p' LIMIT 1"; //check against phone numbers
        $query = mysqli_query($con, $sql);
        $result = mysqli_result($query);
        $e_check = mysqli_num_rows($result);

您需要一个结果来获得num_行计数。使用以下命令:

        $sql = "SELECT * FROM users WHERE phone='$u' AND password='$p' LIMIT 1"; //check against phone numbers
        $query = mysqli_query($con, $sql);
        $result = mysqli_result($query);
        $e_check = mysqli_num_rows($result);
它是

不是

它是

不是



我认为PHP不会以typerorr的形式报告错误,如果
var\u dump($e\u check),会怎么说?@TomHart,这很奇怪,但我现在在var_dump上发现了错误。沮丧:/n您如何调用这段PHP代码?报告类型错误的是JavaScript,而不是PHP。@N.B.-我想你是对的,错误是固定在特定的“第12行”,因此可能与JavaScript有关。无法理解原因,因为它指向我的PHP代码。我已经添加了完整的代码,有什么想法吗?我不认为PHP会以typerorr的形式报告错误,如果
var\u dump($e\u check)?@TomHart,这很奇怪,但我现在在var_dump上发现了错误。沮丧:/n您如何调用这段PHP代码?报告类型错误的是JavaScript,而不是PHP。@N.B.-我想你是对的,错误是固定在特定的“第12行”,因此可能与JavaScript有关。无法理解原因,因为它指向我的PHP代码。我已经添加了整个代码,有什么想法吗?错,空格是可选的。我不会投你反对票,但你写的不是真的。尝试运行您的示例以查看。我建议删除答案。感谢Jay的建议,但这没有帮助。如果我运行该示例,我会收到一个TypeError警告。编辑:但我无法在与OP相同的上下文中运行此操作,我只是设置
$e\u check
.Sry,不。我在本地实例上检查了这一点-结果相同。我想,你的意思是:如果($e_check=!$0)-这对空间很重要。A当然不是。错,空格是可选的。我不会投你反对票,但你写的不是真的。尝试运行您的示例以查看。我建议删除答案。感谢Jay的建议,但这没有帮助。如果我运行该示例,我会收到一个TypeError警告。编辑:但我无法在与OP相同的上下文中运行此操作,我只是设置
$e\u check
.Sry,不。我在本地实例上检查了这一点-结果相同。我想,你的意思是:如果($e_check=!$0)-这对空间很重要。不可能,还是帮不上忙。等等,我正在编辑和上传我的全部代码,我想可能在其他方面有问题/还是没用。等等,我正在编辑和上传我的全部代码,我想可能在其他方面有问题/天哪,我太尴尬了。非常感谢。这就解决了问题。别介意。你可能只是累了。调试是令人难以置信的,尤其是当它是你自己的代码时。你能告诉我为什么控制台指向错误的线路吗?它的错误指向PHP部分,而错误是由JavaScript引起的。您是否使用Chrome的控制台进行调试?Php的错误消息应该在Php_error.log或apache的error_log.Omg中,我很尴尬。非常感谢。这就解决了问题。别介意。你可能只是累了。调试是令人难以置信的,尤其是当它是你自己的代码时。你能告诉我为什么控制台指向错误的线路吗?它的错误指向PHP部分,而错误是由JavaScript引起的。您是否使用Chrome的控制台进行调试?Php的错误消息应该在Php_error.log或apache的error_log中。