为什么不't执行die()函数

Why doesn't the die() function work?

本文关键字:die 函数 执行 为什么不      更新时间:2023-09-26

我有一个ajax调用,它将数据从表单发送到php文件,然后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');");
?>

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

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

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

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

由于PHP代码即使是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();
}

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

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

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

jQuery成功函数只需确保页面已加载。PHP的死并不能改变这一点。您必须使用返回的数据进行检查。

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

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

mysqli_connect("localhost"、"root"、"学生")或die("连接失败");

//失败后,连接死亡消息不显示