mysql如何从一个 php 文件到另一个 php 文件检索错误消息?

标签: jQuery MySQL PHP ajax
发布时间: 2017/4/8 20:37:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我是新的 ajax,这是我第一次尝试使用它。

我试图做的是创建一个小的系统,而无需更新页面注册的电子邮件和密码到数据库和它的工作只是罚款 !

不过,由于你会注意到在我 'register.php' 的文件上,是有一个条件,不允许重复的电子邮件,以及 PDOException,以防止出现错误......,如何发送消息 (警报或无论) 到我的索引页,以防其中任何发生?

这是我的.js 文件︰

$(document).ready(function(){

    $("#btnRegister").click(function(){

        $.ajax({
            type: 'post',
            url: 'register.php',
            data: { txtEmail: $("#frmEmail").val(), txtPassword: $("#frmPassword").val() }
        }).done(function(){
            $("#frmEmail").val('');
            $("#frmPassword").val('');
            $("#frmEmail").focus();
        });
    });
});

我 'register.php' 文件︰

<?php

    try
    {
        $handler = new PDO('mysql:host=127.0.0.1;dbname=register', 'root', '');
        $handler -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $email = $_POST['txtEmail'];
        $password = $_POST['txtPassword'];

        $sql = "SELECT email FROM users WHERE email = ?";
        $query = $handler -> prepare($sql);
        $query -> bindValue(1, $email);
        $query -> execute();

        if(($query -> rowCount()) != 0)
            die("Error: the inserted email already exists.");
        else
        {
            $sql = "INSERT INTO users (email, pass) VALUES (?, ?)";
            $query = $handler -> prepare($sql);
            $query -> bindValue(1, $email);
            $query -> bindValue(2, $password);
            $query -> execute();
        }
    }
    catch(PDOException $ex)
    {
        die("Error: " . $ex -> getMessage());
    }

?>

解决方法 1:

通常情况下,您的 PHP 文件将返回指示成功或失败的注册响应。

在您的 PHP 文件,而不是 die ing 的错误时,您应该返回一个 json 编码的数组,包含错误信息,例如︰

if(($query -> rowCount()) != 0)
    echo json_encode(array('error' => "Error: the inserted email already exists."));
    exit;
else

然后在你 javascript 中的 done 函数,您可以检查此消息︰

}).done(function(data){
    if (data.error) {
        alert(data.error); // or do something else
    } else {
        // every thing looks ok, do your thing
    }
});

我会推荐总是从 php,东西返回是否它是一条错误消息,如上所述,或只是 json_encode(array('success' => true)); 。这种方式,你可以肯定,请求实际上做什么是预期,而没有返回空白页的 (坏) 的另一个原因。

注意︰ 如果你有问题让这工作,你可能需要添加 dataType: 'json' 到您的 ajax 选项 (根据 type: 'post' )

官方微信
官方QQ群
31647020