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

Javascript 使用函数处理AJAX错误,如何传递其他参数?,javascript,jquery,ajax,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 Erro

我正在使用以下类型的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);

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

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.bindnull,someParameter

ajaxError.bindnull,someParameter可能是重复的。bindnull,someParameter是这里的关键,对吗?@MrPablo yes inseak in method hope you have did我实际上使用了beforeSend并向jqXHR对象添加了一个自定义属性,这样我就可以发现触发了哪个AJAX调用