在Ajax中测试PHP响应

我正在制作一个简单的注册机制,将用户名和密码存储到MySQL数据库中。 怎么运行的:

  • 用户将他的数据输入到文本框中。
  • 通过JQuery脚本获取值和验证值。
  • 如果验证通过,则会向PHP文件发出Ajax调用,然后检查用户名是否已被使用。 如果它被采用,它确实echo '0' 。 如果不是,它会echo '1'并将值插入到数据库中。
  • 然后Jquery检查响应并执行适当的操作。

    $.ajax({
        type: "POST",
        url: "register.php",
        data: {usn:us, pwd: pw},
        cache: false,
        success: function(result){
            console.log(result);
            if (result=='1'){
                window.location = "next.php";
            }else{
                errorMessage= "Username taken. <br>";
                $("#regerrormsg").html(errorMessage);
            }
        }
        });
    
  • PHP:

    include 'dbconnect.php';
        $us = $_POST["usn"];
        $pw = $_POST["pwd"];
    
        $tryus = $conn->query("SELECT Username from users WHERE Username='" . $us . "'");
        if ($tryus->num_rows == 0){
            echo '1';
            $conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");  
            session_start();
            $_SESSION["user"] = $us;
        }else{
            echo '0';
        }
    

    现在,这是奇怪的事情。 除了一部分,这非常有效。 该查询确实检查用户名是否已经存在,并确实回显了适当的值('0'或'1')。 我已经通过在JavaScript文件中记录输出来测试了这一点。 我也检查过我的数据库,它从不存储重复的用户。 但是,出于某种奇怪的原因, window.location = "next.php" ; 从不执行,即使输出的值是'1'。 它总是去'else'块。 任何想法为什么发生这种情况? 谢谢。


    检查后端响应的最好方法是使用REST Api客户端。 邮差是最流行的,但我更喜欢失眠。 尝试一下,在我看来,这是前端开发的必备条件。


    请更改以下代码:

    if ($tryus->num_rows == 0){
        echo '1';
        $conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");  
        session_start();
        $_SESSION["user"] = $us;
    }else{
        echo '0';
    }
    

    对此:

    if ($tryus->num_rows == 0){
        $conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");
        echo '1';
    }else{
        echo '0';
    }
    exit();
    

    在next.php文件中创建变量会话。

    更改window.location = "next.php"; to document.location.href="http://your-site-url.com/next.php";

    链接地址: http://www.djcxy.com/p/45635.html

    上一篇: Testing PHP response in Ajax

    下一篇: Can I test that a Sinatra post method successfully saves to a YAML store?