使用JQuery处理错误时

时间:2014-09-02 08:01:42

标签: javascript jquery jquery-deferred

我正在使用JQuery when。语法如下所示:

$.when(
  // Get the HTML
  $.get("/feature/", function(html) {
    globalStore.html = html;
  }),

  // Get the CSS
  $.get("/assets/feature.css", function(css) {
    globalStore.css = css;
  }),

  // Get the JS
  $.getScript("/assets/feature.js")

).then(function() {

  // Add CSS to page
  $("<style />").html(globalStore.css).appendTo("head");

  // Add HTML to page
  $("body").append(globalStore.html);

});

我的问题

  1. 当对服务器的一次调用导致异常(失败场景)或任何其他场景的错误处理时,如何进行错误处理?
  2. 由于我在这里发出Ajax请求,如何定义Ajax请求的超时时间?

2 个答案:

答案 0 :(得分:2)

deferred.then( doneCallbacks, failCallbacks )可以使用

等故障过滤器
$.when(
  // Get the HTML
  $.get("/feature/", function(html) {
    globalStore.html = html;
  }),

  // Get the CSS
  $.get("/assets/feature.css", function(css) {
    globalStore.css = css;
  }),

  // Get the JS
  $.getScript("/assets/feature.js")

).then(function() {

  // Add CSS to page
  $("<style />").html(globalStore.css).appendTo("head");

  // Add HTML to page
  $("body").append(globalStore.html);

}, function(){
    //there is an exception in the request
});

要设置超时,您可以使用timeout选项。

您可以全局使用

jQuery.ajaxSetup({
    timeout: 5000
})

或使用$.ajax()代替短版$.get()timeout选项

答案 1 :(得分:0)

我认为这是因为呼叫是异步的。使用时:

    $.ajax({
          url: "file.php",
          type: "POST",
          async: false,
          success: function(data) {

          }
    });

通话是同步的。