为什么不't执行die()函数
Why doesn't the die() function work?
我有一个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("连接失败");
//失败后,连接死亡消息不显示
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 比较从函数和生成的日期对象
- 为什么不't执行die()函数
- Ajax函数输出一个"0"当我在最后使用die()时