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

textStatusfor エラー ハンドラを確認する

from Doc Function( jqXHR jqXHR, String textStatus, String 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 に答える