0

我正在使用 ajax 将信息从填写的表单发送到 php 文件,该文件将大量电子邮件发送到表单中选定的用户类别。问题是列表非常大(5000 个用户),并且在列表完全完成之前操作超时。

我已经为操作设置了超时限制,但我不知道如何将原始表单数据重新发送回 php 文件,以便它可以继续处理列表。下面是我使用的 Jquery Ajax 代码

$(document).ready(function(){
  $("#subscriberform").submit(function(e) {
    e.preventDefault(); //prevent default form submit

    var postData = $(this).serializeArray();
    var formURL = "'.SITE_PATH.'components/admin/subscribers/ajaxprocess.php";

    $.ajax({
      url: formURL,
      type: "POST",
      data: postData,
      timeout: 30000,
      dataType: "html",
      beforeSend: function(){
        $("#formdata").html("<p>Sending selected articles to subscribers: </p><img src=\"'.DEFAULT_TEMPLATE_PATH.'images/ajaxloader.gif\"><p><strong>Please dont close window</strong></p>");
      },
      success: function(data,textStatus){
        $("#formdata").html("<p>Sent Data ["+textStatus+"]: </p>"+data+"");
      },
      error: function(x,t,m){
        // I want to insert the code here
      }
    });
  });
});

我对 jQuery 不是很了解。我能得到一些帮助吗

提前致谢

4

1 回答 1

1

检查textStatus错误处理程序

来自文档函数(jqXHR jqXHR,字符串 textStatus,字符串 errorThrown)

的值textStatus可以是"timeout", "error", "abort", and "parsererror"

function doSubmitList(formData)
{
    var formURL = "'.SITE_PATH.'components/admin/subscribers/ajaxprocess.php";

    $.ajax({
        url: formURL,
        type: "POST",
        data: formData,
        timeout: 30000,
        dataType: "html",
        beforeSend: function(){
            $("#formdata").html("<p>Sending selected articles to subscribers: </p><img src=\"'.DEFAULT_TEMPLATE_PATH.'images/ajaxloader.gif\"><p><strong>Please dont close window</strong></p>");
        },
        success: function(data,textStatus){
            $("#formdata").html("<p>Sent Data ["+textStatus+"]: </p>"+data+"");
        },
        error: function(x,t,m){
            if(t==="timeout") {
                doSubmitList(formData);
            }
        }
    });
}
于 2013-10-24T09:54:56.620 回答