提交表单的Jquery和ajax不起作用

时间:2014-05-16 16:37:47

标签: jquery ajax forms

这是我提交表单的代码: 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;

1 个答案:

答案 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()

如果我读到的是真的那么它应该有效

试一试,让我知道