2017-06-29 22 views
0

一度に1つの電子メールを送信して、一括して電子メールをjQuery/Ajaxページに送信するミドルウェア(PHPタイプ)ページを変換しようとしています。これは呼び出し元のajax関数によって呼び出されます。私は、jsonレスポンス(例:data.status = "finished")までajax呼び出しを同期的に繰り返す必要があります。各呼び出しはdata.percentage(パーセント完了)を返して、単純なプログレスバーを段階的に更新します。これと同様に、放送をキャンセルするための「停止」ボタンを追加したいと思います。呼び出しページは、何回呼び出しを行う必要があるか分かりません。ミドルウェアは、次の電子メールを生成し、SMTPホストに直接話し、その電子メールを送信済みとしてマークし、それがどのくらい離れているかを調べることで、完了したパーセンテージを返すことができます。AJAX呼び出しを繰り返します。JSON応答にプロセス完了が表示されるまで

私はこれにいくつかのバリエーションを見ましたが、ほとんどの解決策は、manuがどのようにajax呼び出しをループするかを知っているようです。

すべてのコードスニペットが分かります。ここにループや停止コードのないコードがあります。

jQuery("#sendButton").click(function() { 
    var ezineid = jQuery("#ezineid").val() ; 
    var percentage = 0 ; 
    var status = "" ; 
    jQuery.ajax({ url: '/cms/emailsend.lasso', 
     type: 'POST', 
     dataType: 'json', 
     async: false, 
     data: { 
     ezineid: ezineid 
     }, 
     success: function(data) { 
      // have the html to display now 
      percentage = data.percentage ; 
      status = data.status ; 
      // update the progress bar 
      // data.status = finished? 
     } 
    }); 
}); 
+2

このコードを書いて仕事をすることができない場合は、適切な場所に来ています。質問にコード(または関連する部分)を追加するだけで、それがなければ助けにならないからです。 [ask]を見てください。 –

答えて

0
var timeout = setTimeout(function() { 
     $.ajax({ 
      url: "test.html", 
      context: document.body 
     }).done(function() { 
      clearTimeout(timeout) 
}); 
    }, 100); 

あなたはこれを試すことができますが、イベントが発生するのを聴きたい場合は、Node.jsのとソケットが必要になります。

+0

node.jsを使用することは可能かもしれませんが、メールジェネレータと送信者を書き直す必要があります。これは簡単な作業ではありません。私たちが送信している電子メールは、約16のニュース記事と画像を含むテンプレート駆動型の応答型電子メールです。 –

+1

ソケットを使うためにサーバー側をNodeに書き直す必要があるのはなぜですか? WebソケットのPHP実装があります。 – ADyson

関連する問題