这是我提交表单的代码: aj.js $(文件)。就绪(函数(){
$("#reqForm").submit(function(e){
e.preventDefault();
var f = e.target,
formData = new FormData(f),
xhr = new XMLHttpRequest();
xhr.open("POST", f.action,true);
xhr.send(formData);
xhr.onreadystatechange=function()
{
if (xhr.readyState==4 && xhr.status==200)
{
$("#alert").html(xhr.responseText);
$('#alert').css('visibility','visible').fadeOut(5000);
}
}
});
});
第一次提交表单时,一切都很好,所有mycode运行良好。但是,当我想要提交第二,第三,...时间ajax代码完成和表格数据保存在数据库中,但我的代码的这部分不起作用
xhr.onreadystatechange=function()
{
if (xhr.readyState==4 && xhr.status==200)
{
$("#alert").html(xhr.responseText);
$('#alert').css('visibility','visible').fadeOut(5000);
}
我的插入文件:
$result=mysqli_query($dbCnn,"insert into request (name,telNum,email,request,date) values('$_POST[name]',$_POST[tel],'$_POST[email]','$_POST[request]',NOW())");
if(mysqli_affected_rows($dbCnn)<1)
$_SESSION['alert']="success!!";
else
$_SESSION['alert']="NOT!";
echo $_SESSION['alert'];
}
&GT;
答案 0 :(得分:0)
很明显xhr.onreadystatechange
在第一次之后没有开火。
我不确定这是否是解决方案。但是您注册表单提交的方式可能会产生影响。
因此,尝试将提交事件链接到根文档,以便每次提交和重新加载时都会冒泡,就像这样
$(document).ready(function(){
$(document).on("submit","#reqForm",function(e){
e.preventDefault();
var f = e.target,
formData = new FormData(f),
xhr = new XMLHttpRequest();
xhr.open("POST", f.action,true);
xhr.send(formData);
xhr.onreadystatechange=function()
{
if (xhr.readyState==4 && xhr.status==200)
{
$("#alert").html(xhr.responseText);
$('#alert').css('visibility','visible').fadeOut(5000);
}
}
});
});
我希望能解决这个问题
答案的灵感来自:Submitting a form with jQuery/Ajax only works every other time
========== 编辑:
关于订单确实很重要的SO答案有一些想法,所以您首先open()
Ajax请求然后设置您的活动xhr.onreadystatechange=function()
然后使用send()
如果我读到的是真的那么它应该有效
试一试,让我知道