为什么die()函数不起作用?

时间:2013-08-23 08:02:17

标签: php javascript ajax die

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

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文件:

addUser.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次来电,它仍会提示用户已成功添加。

5 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

由于PHP代码甚至成功执行die(),因此ajax将触发成功,您将接收成功消息。

在您可以添加return false;

的任何时候停止您的JavaScript

在你的成功栏中

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();
}

因此,一旦完成调试,您可以删除这些行..

答案 2 :(得分:0)

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

如果要执行Error函数,则必须在php文件中添加Throw异常或标题403。

答案 3 :(得分:0)

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

  

成功   类型:Function(PlainObject数据,String textStatus,jqXHR jqXHR)   如果请求成功则调用的函数。该函数传递三个参数:&gt;从服务器返回的数据,根据dataType参数格式化;字符串&gt;描述状态;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。从jQuery&gt; 1.5开始,成功设置可以接受一系列函数。每个函数都将在&gt;中调用。这是一个Ajax事件。

答案 4 :(得分:0)

ajax请求php文件,die('here')相当于echo'the here',返回值,即成功实现