我想为我的 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/