0

我有一个 ajax 调用,它将数据从表单发送到 php 文件,然后将该数据插入数据库。我die在所说的 php 文件中调用了,因为我想尝试一些东西,但它不起作用。

addUserForm.php

<script>
    $(document).ready(function () {
        var $form = $('form');
        $form.submit(function (event) {
            event.preventDefault();

            var formData = $form.serialize(),
                url = $form.attr('action');

            $.ajax({
                type: "POST",
                url: url,
                data: formData,
                success: function () {
                    //$("#div1").load("table.php");
                    alert('User Successfully Added');
                    document.getElementById("form1").reset();
                }
            });
        });
    });
</script> 

这是php文件:

添加用户.php

<?php
    include('sqlconnection.php');
    die('here');
    $firstname = $_POST['fname'];
    $lastname = $_POST['lname'];
    $middlename = $_POST['mname'];
    $password = $_POST['pword'];
    $username = $_POST['uname'];
    $gender = $_POST['gender'];
    $utype = $_POST['utype'];

    $query = "INSERT INTO user (firstname,lastname,middlename,gender) VALUES ('$firstname','$lastname','$middlename','$gender')";   

    mysqli_query($con,$query);

    $result = mysqli_query($con,"SELECT id FROM user WHERE firstname = '$firstname'");

    $row = mysqli_fetch_assoc($result);

    $uid=$row['id'];

    $result = mysqli_query($con,"INSERT INTO accounts (u_id,username,password,account_type) VALUES ('$uid','$username',md5('$password'),'$utype');");

?>

即使有die呼叫,adduser.php它仍然会提醒用户已成功添加。

4

5 回答 5

6

那是因为die()只终止/结束 PHP 脚本。从 AJAX 的角度来看,请求是成功的。

您应该在 PHP 页面中回显信息,然后在 AJAX 中输出响应的内容。

您还可以将 PHP 脚本中的响应标头设置为 200/OK 以外的值,例如 401/Unauthorized 或 400/Bad Request。基本上所有 400 和 500 状态码都表示错误。

于 2013-08-23T08:05:07.083 回答
0

ajax请求php文件,die('here')相当于echo 'here',返回值,表示执行成功

于 2013-08-23T08:15:54.723 回答
0

jQuery 成功函数只是确保页面已加载。PHP 中的骰子不会改变这一点。您必须检查返回的数据。

success 类型:Function(PlainObject data, String textStatus, jqXHR jqXHR) 请求成功时调用的函数。函数传入三个参数: >从服务器返回的数据,根据dataType参数格式化;一个字符串 > 描述状态;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。从 jQuery >1.5 开始,成功设置可以接受一个函数数组。每个函数都会在 >turn 中被调用。这是一个 Ajax 事件。

于 2013-08-23T08:07:39.227 回答
0

由于 PHP 代码即使 thou 也成功执行die(),ajax 将触发成功,您将收到成功消息。

随时停止您的 javascript,您可以添加return false;

在你的成功块

success: function () {
    //$("#div1").load("table.php");
    alert('User Successfully Added');
    document.getElementById("form1").reset();
}

您可以像这样添加这两

success: function (data) {
    /* These two lines*/
    console.log(data);
    return false;

    //$("#div1").load("table.php");
    alert('User Successfully Added');
    document.getElementById("form1").reset();
}

所以一旦你完成了你的调试,你就可以删除这些行..

于 2013-08-23T08:05:24.287 回答
0

Die 函数不会停止 javascript。它只是停止 PHP。例如,如果在插入数据之前添加 die() 函数,则不会插入数据,但会执行成功函数,并且会有警报。

如果要执行 Error 函数,则必须在 php 文件中添加 Throw exception 或 header 403。

于 2013-08-23T08:06:21.877 回答