2016-06-20 13 views
0

私は多くのユーザーにメールを送信するためにPHPページをリクエストするために以下の方法を使用します。私は全くの反応は必要ありません。私が望むのは、関数を呼び出して、JSで自分のことをやり始めます。JQuery - AJAXのリクエストを一度送信すると、AJAXの応答が返されます

$.ajax({ 
    type : 'POST', 
    url  : 'mail_users.php', 
    data : formData, 
    dataType: 'JSON', 
    encode : true 
}) 
.done(function(data) { 
    console.log(data); 
}) 
.fail(function() { 
    console.log("ERROR"); 
}); 

また、リクエストが正しく行われたかどうかを確認したい場合もあります。 JSでsetTimeout()やPHPでignore_user_abort(true)set_time_limit(0)など多くのSOの提案を試みました。

しかし、何も私のために働いた、これのための適切なスニペットはありますか? これをどうすれば実現できますか?前もって感謝します。

+0

あなたのコードに問題は何ですか?最初のビューからは、正しいかもしれません。要求が成功したかどうかに関わらず、要求は実行され、コードは実行され続ける必要があります。 – Juan

+0

@Juan and all:mail_users.phpがリクエストされたら(最初のAJAXリクエスト)、テーブルを更新してから、ページセクションにテーブルセクション(2番目のAJAXリクエストが必要)をリロードする必要があります。しかし、ページは、(最初​​のAJAXリクエスト)プロセスがテーブルセクションをリロードする前に完了するのを待っています。 –

+0

その場合、最初のコールの「完了」内に2回目のコールを行う必要があります。 「完了」セクションは、最初のコールが完了すると実行されます。 – Juan

答えて

1

お手伝いをしようとしています。私はURLにAJAX呼び出しを行うコードを書いた。それにはコールバック関数が含まれていますが、(結果を確認したくないので)無視することができます。このコードを試して、ターゲットURLを変更してください。

結果

Tue Jun 21 2016 15:46:30 GMT-0300 (BRT) Req sent {"email_id":"1","key":"abc"} 
Tue Jun 21 2016 15:46:30 GMT-0300 (BRT) Success 
Tue Jun 21 2016 15:46:30 GMT-0300 (BRT) Complete {"readyState":4,"responseText":"\n\t\n\t\t\n\t\t\n\t\n\t\n\t\tResult:\n\t\t 
\n\t\n","status":200,"statusText":"OK"} 

コード

<html> 
    <head> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
     <script> 
      function log(msg) { 
       var dateMsg = (new Date()) + ' ' + msg; 
       var $res = $('#result'); 
       var $o = $('<li>').html(dateMsg); 
       $res.append($o); 
      } 

      function checkEmailFrontEnd(email_id, key) { 
       var userdata = { 
        email_id: email_id, 
        key: key 
       }; 
       var opts = { 
        url: 'html.html', 
        type: 'POST', 
        data: userdata, 
        success: function(data, textStatus, jqXHR){ 
         log('Success'); 
        }, 
        error: function(jqXHR, textStatus, error){ 
         log('Error ' + error); 
        }, 
        complete: function(jqXHR, textStatus){ 
         log('Complete ' + JSON.stringify(jqXHR)); 
        } 
       }; 
       $.ajax(opts); 
       log('Req sent ' + JSON.stringify(userdata)); 
      } 
      $(function(){ 
       checkEmailFrontEnd('1', 'abc'); 
      }); 
     </script> 
    </head> 
    <body> 
     Result: 
     <ul id='result'></ul> 
    </body> 
</html> 
+0

ここで、.success()と.complete()は別の$ .ajaxを要求する前に時間がかかります。 –

関連する問題