javascript - jQuery 的 AJAX 包装器

标签 javascript jquery ajax

我想为我的 Ajax 调用创建一个方便的方法,因为它在项目中被广泛使用。

到目前为止,项目中的典型调用如下所示。

$.post(
  "url",
  {
    param1: value1,
    param2: value2
  },
  function (data) {}
);

这个调用在项目中用不同的参数重复了多次,所以我希望能够创建一个函数,我可以将参数传递给它,它将处理整个 Ajax 调用,而不必每次都编写代码. 预期输出:

var data= {firstName:"John", lastName:"Doe", age:46};
do_ajax_request(data);

函数 do_ajax_request 又包含实际的 Ajax 代码,它发出实际的请求并处理结果。 如果可能的话,我还希望它返回一个回调,以防我需要执行任何额外的操作, promise 是否适用于此? 这将是一个全局函数,因此我可以从任何 JavaScript 文件访问它。

最佳答案

开箱即用的 jQuery 支持的东西有这么多复杂的答案。将我的评论变成答案。

您基本上只是为包装器编写一个包装器,因此您不必重新编码一些基本行。这没什么坏处,因为在一个地方进行更改比在多个地方进行更改更容易。

如此定义您的函数并返回 jQuery 拥有的 Ajax 对象。您可以使用 done、fail、always 方法。

function do_ajax_request (data) { 
  return $.post("url", data); 
}

do_ajax_request({"foo":"bar"})
  .done( function(){})
  .fail(function(){})

do_ajax_request({"foo":"bar"})
  .done( function(){})
  .fail(function(){})

如果你想在里面有公共(public)代码,你也可以这样做,错误处理程序的基本思想......

function do_ajax_request (data) { 
  var xhr = $.post("url", data);
  xhr.fail(function () {
    console.log(arguments)
  });
  return xhr;
}

关于javascript - jQuery 的 AJAX 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190869/

相关文章:

javascript - 而 ajax,异步 :true, 延迟

javascript - 使用 google calendar api 连接到非用户日历

javascript - 如何阻止用户从浏览器控制台更改脚本

javascript - 不带参数调用 jQuery 的 ajaxSetup 有副作用吗?

jquery - Tablesorter 过滤器小部件、Tablesorter 过滤器和分页问题

javascript - Angular : How can I stop my $http calls from blocking the UI?

javascript - 比较条件对

javascript - 无法使用 jquery 或 javascript 获取签名字段文本或值

php - 具有多个父项的 Javascript/PHP 家谱生成器

php - 从使用ajax获取的json创建html