【问题标题】:I am enable to get the success message..!我可以得到成功的消息..!
【发布时间】:2015-12-05 04:24:34
【问题描述】:

我正在尝试将用户详细信息输入数据库并存储数据..我希望成功消息淡入我已经尝试了一些代码,但遗憾的是它不起作用...请帮助我摆脱这个..乞求如果我错了,请原谅.. 这是我的 register.php 代码

               <?php
    require_once 'DB_Functions.php';
    $db = new DB_Functions();

    // json response array
    $response = array("error" => false);
    if (!empty($_POST['fname']) && !empty($_POST['lname']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['mobile'])){
        // receiving the post params
        $fname = trim($_POST['fname']);
        $lname = trim($_POST['lname']);
        $email = trim($_POST['email']);
        $password = $_POST['password'];
        $mobile = trim($_POST['mobile']);

        // validate your email address
        if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
            // valid email address
            if ($db->isUserExisted($email)) {
                // user already existed
                $response["error"] = true;
                $response["error_msg"] = "User already existed with " . $email;
                echo json_encode($response);
            } else {
                // create a new user
                $user = $db->storeUser($fname, $lname, $email, $password, $mobile);
                if ($user) {
                    // user stored successfully
                    $response["error"] = false;
                    $response["uid"] = $user["id"];
                    $response["user"]["fname"] = $user["fname"];
                    $response["user"]["lname"] = $user["lname"];
                    $response["user"]["email"] = $user["email"];
                    $response["user"]["created_at"] = $user["created_at"];
                    $response["user"]["updated_at"] = $user["updated_at"];
                    echo json_encode($response);
                } else {
                    // user failed to store
                    $response["error"] = true;
                    $response["error_msg"] = "Unknown error occurred in registration!";
                    echo json_encode($response);
                }
            }
        } else {
            // invalid email address
            $response["error"] = true;
            $response["error_msg"] = "invalid email address";
            echo json_encode($response);
        }
    } else {
        $response["error"] = true;
        $response["error_msg"] = "Required parameters are missing!";
        echo json_encode($response);
    }
?>

这里是带有 jquery 的 .html 文件..

              <html>
    <head>
<title>jQuery Test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript" src = "register.js"></script>
 </head>

 <body>

    <!--html body-->
    <form name = "register" id = "register" method = "POST">
        <label>First name:</label>
        <input type = text name = "fname" id = "fname" required>
        <label>Last name:</label>
        <input type = "text" name = "lname" id = "lname" required>
        <label>E-mail:</label>
        <input type = "email" name = "email" id = "email" required>
        <label>Password</label>
        <input type = "password" name = "password" id = "password" required>
        <label>Mobile no:</label>
        <input type = "number" name = "mobile" id = "mobile" required>
        <input type="submit" value="Insert" name="submit" id = "submit">
    </form>
    <div id = "result" align = "right"></div>
</body>
</html>

这是我的 /.js/ 文件

        $(document).ready(function(){

    $("#submit").click(function(e){

        e.preventDefault();

        $.ajax({
            url: "register.php",
            type: "POST",
            data: {
                fname: $("#fname").val(),
                lname: $("#lname").val(),
                email: $("#email").val(),
                password: $("#password").val(),
                mobile: $("#mobile").val()
            },
            dataType: "JSON",
            success: function (json) {
                $("#result").html(json.user.email);  // like that you can display anything inside #result div
                $("#result").fadeOut(1500);

            },
            error: function(jqXHR, textStatus, errorThrown){
                alert(errorThrown);
            }
        });
    });

}); 

【问题讨论】:

  • 为什么你的输入中有href = "#"
  • 先生..!!我已经删除了它,但它对我的输出没有影响..!!:(
  • 检查 PHP/SQL 上的错误并检查您的控制台。
  • @krishna 你能解释一下在success 中使用jsonStr 究竟想达到什么目的吗?
  • 奇怪的是你说它保存了用户但你没有收到成功回调。如果您在$response = array("error" =&gt; false); 下方添加echo "Register check";,您的success 函数中是否有任何响应

标签: php jquery html json ajax


【解决方案1】:

没有必要使用JSON.stringify(jsonStr),因为jQuery已经已经为你解析了响应对象。 jQuery 会查看响应的Content-Type,如果是application/json,它将解析它,并将解析结果提供给您的成功处理程序。

你的 jQuery 应该是这样的:

$(document).ready(function(){

    $("#submit").click(function(e){

        e.preventDefault();

        $.ajax({
            url: "register.php",
            type: "POST",
            data: {
                fname: $("#fname").val(),
                lname: $("#lname").val(),
                email: $("#email").val(),
                password: $("#password").val(),
                mobile: $("#mobile").val()
            },
            dataType: "JSON",
            success: function (json){
                if(json.error){
                    $("#result").html(json.error_msg);  // display error message
                }else{
                    $("#result").html(json.user.email);  // like that you can display anything inside #result div
                }
                $("#result").fadeOut(1500);
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert(errorThrown);
            }
        });
    });

}); 

【讨论】:

  • 先生..!!似乎即使是空字段也被带入数据库..我使用过 ||....!==") 但似乎无法正常工作
  • 如果请求失败,则调用 @krishna error: function(jqXHR, textStatus, errorThrown){ ... }。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象、描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数(除了null)的可能值为"timeout""error""abort""parsererror"。发生 HTTP 错误时,errorThrown 会收到 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。
  • @krishna 我已经更新了我的答案。请使用更新后的代码测试您的应用程序。
  • @krishna 不,error_msg 来自您的register.php。看看这些声明,$response["error"] = true; $response["error_msg"] = "Unknown error occurred in registration!";$response 数组中有一个关键字段 error_msg
  • @krishna 所以在显示Registeration successful!之后你想提交表单并重定向到login.html,对吧?
猜你喜欢
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
相关资源
最近更新 更多