使用函数来处理AJAX错误,如何传递其他参数?

时间:2015-11-05 09:54:16

标签: javascript jquery ajax

我正在使用以下样式的AJAX调用:

$.ajax({
    dataType: "json",
    type: "GET",
    url: url
}).done(function(result, textStatus, jqXHR) {
    if(result.success == 1) {
        try {
            if(!result.value_that_might_be_null) {
                throw new Error("Value is null");
            }
        } catch(err) {
            ajaxError(jqXHR, err.message);
        }

    } else {
        throw new Error("Unsuccessful");
    }
}).fail(ajaxError);

function ajaxError(jqXHR, textStatus, errorThrown) {
    console.log('jqXHR: ' + jqXHR);
    console.log('status: ' + textStatus);
    console.log('error: ' + errorThrown);
}

这使我能够很好地控制我的AJAX调用,并且可以测试某些不存在的值,设置为错误的等等。

但是,我有一些不同的AJAX调用,每个调用在.done()回调中都做了很多不同的事情,这意味着它们需要分开并且不需要重新计算到类中。

但我的问题是,当通过try / catch语句调用时,如何向ajaxError()添加额外的参数?

我可以这样做:

function ajaxError(jqXHR, status, error, additionalParameter = null) {
    //blah blah blah
}

ajaxError(jqXHR, errorMessage, errorThrown, myAdditionalParameter);

1 个答案:

答案 0 :(得分:0)

您可以创建一个接受成功和错误回调的函数,如下所示:

function sendRequest(url, success, error) {
  $.ajax({
    dataType: "json",
    type: "GET",
    url: url,
    success: function(result, textStatus, jqXHR) {
      // do something if you want to
      if (success)
        success();
    },
    error: function(jqXHR, textStatus, errorThrown) {
      // do something if you want to
      if (error)
        error();
    }
  });
}

function ajaxError(jqXHR, textStatus, errorThrown) {
  console.log('jqXHR: ' + jqXHR);
  console.log('status: ' + textStatus);
  console.log('error: ' + errorThrown);
}

你可以像sendRequest('/url',null,ajaxError)一样打电话 或sendRequest('/url',null,ajaxError.bind(null,someParameter))