Javascript 设置jQuery.ajax,然后执行
假设我想创建一个变量:Javascript 设置jQuery.ajax,然后执行,javascript,jquery,ajax,Javascript,Jquery,Ajax,假设我想创建一个变量: var ajax = $.ajax( url ) .done( function (response) { //done body }) .fail( function (jqXHR, status, errorThrown) { //fail }) .always( function ()
var ajax = $.ajax( url )
.done( function (response) {
//done body
})
.fail( function (jqXHR, status, errorThrown) {
//fail
})
.always( function () {
//always
});
但我不希望它立即发送请求。我想做一些类似的事情:
ajax.execute();
在某一点上更进一步,或者可能只是让它不安。可能吗
这个问题的关键是在不使用包装器的情况下使用jQuery的ajax的全部功能,或者使用一个包装器,该包装器可以使用所有当前的$.ajax方法+潜在的新方法,而无需添加代码。您可以编写一个函数,然后使用jQuery侦听事件以触发该函数。例如
$("button").on("click", function(event) {
fireAjax();
});
function fireAjax() {
....do call here
)
为什么不是一个函数
var ajax = function ajax(url, doneFunc, failFunc, alwaysFunc){
var functions = {
"done":doneFunc,
"fail":failFunc,
"always":alwaysFunc
};
this.execute = function(){
$.ajax( url )
.done(functions.done)
.fail(functions.fail)
.always(functions.always);
};
}
您可以直接使用XMLHttpRequest
var oReq = new XMLHttpRequest();
oReq.open("GET", url);
oReq.send();
使用$.ajaxSetup()
定义应该使用或可以覆盖的选项
$.ajaxSetup({
url: "",
success: success,
error: error
});
在这里调用
$.ajax()
将使用url
,success
函数,error
函数定义在$.ajaxSetup()
。或者,如果应该更改设置
,则在$.ajax()
调用中传递应该更改的设置;e、 g$.ajax({url:abc})。always(fn)
仍将使用success
,error
函数定义,尽管新的url
设置了。您可以编写自己的方法,但我不认为jQuery内置了类似的功能。当然,函数是一个解决方案,但在这种情况下,我需要指定done,fail etc作为参数,如var ajax=function ajax(url,done,fail)
,但我希望它们是可选的。如果它们不存在,请替换为默认函数或空函数。@如果您真的不需要它,jQuery应该已经处理了未定义的回调。EDIT:EDIT2:oops,我猜你的意思是将例如null
作为回调传递。这个问题的关键是在没有包装的情况下使用jQuery的ajax的全部功能,或者使用一个可以使用所有当前$.ajax方法+潜在的新方法而不添加代码的包装。@abr所以问题不清楚。。。您更希望扩展$.ajax
方法