我有一个ajax调用,它将表单中的数据发送到php文件,然后将该数据插入到数据库中。我在所说的php文件中调用了die
,因为我想尝试一些但它不起作用。
<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
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
次来电,它仍会提示用户已成功添加。
答案 0 :(得分:6)
那是因为die()
只会终止/结束PHP脚本。从AJAX的角度来看,请求是成功的。
您应该在PHP页面中回显信息,然后在AJAX中输出响应的内容。
您还可以将PHP脚本中的响应标头设置为200 / OK以外的其他标头,例如401 / Unauthorized或400 / Bad Request。基本上所有400和500状态代码都表示错误。
答案 1 :(得分:0)
由于PHP代码甚至成功执行die()
,因此ajax将触发成功,您将接收成功消息。
在您可以添加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();
}
因此,一旦完成调试,您可以删除这些行..
答案 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',返回值,即成功实现