2017-09-26 12 views
2

私はajaxFormを使用して、バックグラウンドで実行されるphpファイルにデータを送信し、いくつかのjs関数はPHPファイルが非同期で実行されているかどうかをチェックします。だから何らかの失敗(インターネット/電気が消えた)の場合、私はユーザに最後のフォーム提出を再試行させたい。だから私はいくつかのAjaxリトライ機能をこのように見つけた、best way to retry ajaxしかし、それは同じAjaxリクエストにある、私は別の機能から自分のajaxを再試行することができる必要があります。それも可能ですか?渡された値をフォームに格納していることを考えれば、だから、ajaxForm必要に応じて再送信

$(document).ready(function(){ 
 
$('#form').ajaxForm({ 
 
    target: '#ajax-response', 
 
    success: function(){ 
 
\t initAjaxCheck(); 
 
    } 
 
}); 
 
lockCheck(); 
 
});
、基本的にlockcheck()ページの更新は、/リロード後にプロセスがまだruningており、いずれかの障害がprevous実行で検出された場合、フォームの送信を再試行することができるかどうかをチェックします。私のユーザープレスRETRY場合

function lockCheck(){ 
 
    $.ajax({ 
 
\t type:"POST", 
 
     url:"analysisquery.php", 
 
     data:{'flag':'lockCheck'}, 
 
     success:function(result){ 
 
    \t  if (result=="1") { //not finished/unsuccessful 
 
    \t \t initAjaxCheck(); 
 
    \t  } 
 
     } 
 
    }); 
 
} 
 

 

 

 
function initAjaxCheck(){ 
 
    $.ajax({ 
 
     type:"POST", 
 
     url:"analysisquery.php", 
 
     data:{'flag':'initProcCheck'}, 
 
     success:function(data){ 
 
    \t  if (data=="1"){ //just not finished 
 
\t \t spinnerLoad(); 
 
\t \t timerCheck=setInterval(function(){ 
 
\t \t  ajaxCheck(timerCheck); 
 
\t \t },1000); 
 
      } else { //unsuccessful 
 
      var toRepeat = confirm ("Last try was unsuccessful. Retry?"); 
 
      if (toRepeat){alert("retry");} else {alert("cancel");} 
 
      } 
 
     } 
 
    }); 
 
}

だから、私は私のajaxFormの提出を再試行する必要があります。ここでは

はjsのスクリプトがあります。

+0

私はあなたが単に 'initAjaxCheck()'を呼び出すことができると思います。 Javascript関数は、関数内で自身を呼び出すことができます。これは再帰関数と呼ばれます。 –

+0

@JacobGohはフォームの値をasync phpに渡しますか? 'initAjaxCheck'は、' ajaxForm'の状態が 'success'であれば、プロセスをチェックする関数です。 – upicik

+1

申し訳ありませんが、私は本当にあなたの機能を理解しています。私はあなたのデータがどのように流れるか知っています。データを変数に入れ、すべてのajax呼び出しの前にデータが存在するかどうかを確認することができます。再送信時にデータがない場合は、 '$( '#my_input_field').val()'などの形式を使用してフォームの値1を取得し、その値をajax呼び出しに渡します。お役に立てれば。 –

答えて

1

私は少し正確にあなたが求めているものと混同していますが、私は幾分理解していると信じています。

フォーム送信をトリガーします。

$('#form').trigger("submit"); 

または

var event = jQuery.Event("submit"); 
$('#form').trigger(event); 

単にあなたconfirm関数の後にそれを追加し、あなたのコードでこれを実装するには。

var toRepeat = confirm ("Last try was unsuccessful. Retry?"); 

if (toRepeat){ 
    alert("retry"); 
    $('#form').trigger("submit"); 
} else { 
    alert("cancel"); 
} 
関連する問題