重用相同的AJAX调用

时间:2017-11-03 23:54:55

标签: javascript jquery ajax callback

我对网址有几个非常相似的ajax请求,但是应该在不同的点上对响应做不同的事情。因此,我不是每次需要时都编写新的ajax调用,而是尝试将ajax调用重用为带参数的函数:

function createAjaxObj(type,name,id,successFunc){
    var config = {
        url: MY_URL,
        type: type,
        data: {
            name : name,
            id : id,
        },
        headers: { "X-CSRFToken": returnCsrfToken(); },  
        success: successFunc,
        error: function(xhr,ajaxOptions, thrownError) { console.log('error=',xhr);},
    };  
    $.ajax(config);
}

所以现在,我计划在每次需要时调用此函数:

var myFunc = function(context){console.log(context)}
createAjaxObj("GET","MyName",58,myFunc)

我想知道这是一个好主意还是常规做法还是有更简单的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

如果你对回复做了什么改变,你可以做出承诺:

function createAjaxObj(type,name,id,successFunc){
  return $.ajax({
     url: MY_URL,
     type: type,
     data: {
       name: name,
       id: id
     }
  })
}

现在您可以像这样运行它:

createAjaxObj('foo', 'bar', 1)
  .then(function(data) { // do something with data })
  .error(function(err) { // do something with error })

我认为这对你有用。如果没有,请告诉我,我会为它创造一个小提琴。

答案 1 :(得分:1)

我会以承诺的方式做到这一点:

 function myAjax(type, name, id) {
    return $.ajax({
      url: MY_URL,
      type: type,
      data: {
        name : name,
        id : id,
      },
      headers: { "X-CSRFToken": returnCsrfToken(); })
    })
    .fail(function(){
      console.log('error');
    });
  }

  var myFunc = function(context){ console.log(context); };
  myAjax("GET", "MyName", 58).then(myFunc);