2
function submitForm(){
    var urlid = document.getElementById("actionUrl").value;
    jQuery.support.cors = true;

    setTimeout(function(){
      $.ajax({
        url:urlid,
        type : "GET",
        crossDomain : true,
        data:transId,
        success:function(data)
        {
            alert(data);
        },

        error: function (xhr, ajaxOptions, thrownError)
        {
            console.log(thrownError);
            alert(xhr.status);
            alert(ajaxOptions);
            alert(thrownError);
        }
        });
    },1000);
};

コントローラーから「true」、「false」、または「pending」の 3 つの応答のいずれかを受け取る ajax 呼び出しがあります。応答が 'true' または 'false' の場合、ajax は終了する必要があります。応答が「保留中」の場合、ajax はコントローラーをさらに 20 秒間ポーリングする必要があります。応答を別の JavaScript 関数に渡すことができるはずです。ajax/jquery でこれを行うことは可能ですか? 私はこの技術に不慣れです。

4

6 に答える 6

0

このようなものはそれを行うべきです:

function checkData (data) {
  if (data == 'true')         // do something
  else if (data == 'false')   // do something else
  else if (data == 'pending') {
    setTimeout(pollServer, 20000);
  }
}

function pollServer() {
   var urlid = document.getElementById("actionUrl").value;
   $.ajax({
    url:         urlid,
    type:        "GET",
    crossDomain: true,
    data:        transId,
    success:     checkData
    error:       // error function
  });
}

function submitForm(){
   jQuery.support.cors = true;
   pollServer();
}
于 2013-05-03T06:29:59.267 に答える
0

組み込みの jQuery ajax タイムアウト プロパティがあります。これを使用してください: http://api.jquery.com/jQuery.ajax/

timeout
Type: Number
Set a timeout (in milliseconds) for the request.

例: $.ajax エラーがタイムアウトかどうかを判断する

于 2013-05-03T06:33:36.643 に答える
0
var ajaxtimeout = setTimeout(function(){...}

setTimeout(function() { clearTimeout(ajaxtimeout); }, 20000);

ああ、また.abort()、リクエストオブジェクトを呼び出す必要がありますが、コードを書き直すのが面倒です:)

于 2013-05-03T06:16:18.837 に答える