假设我想创建一个var:
var ajax = $.ajax( url )
.done( function (response) {
//done body
})
.fail( function (jqXHR, status, errorThrown) {
//fail
})
.always( function () {
//always
});
但我不希望它立即发送请求。我想做点什么:
ajax.execute();
在某些方面,或者可能只是取消它。这可能吗?
这个问题的关键是使用jQuery的ajax的完整功能而不使用包装器,或使用包装器,它可以使用所有当前的$ .ajax方法+可能是新的而无需添加代码。
答案 0 :(得分:0)
您可以编写一个函数,然后使用jQuery监听事件以触发该函数。 E.G。
$("button").on("click", function(event) {
fireAjax();
});
function fireAjax() {
....do call here
)
答案 1 :(得分:0)
为什么不是一个功能?
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);
};
}
答案 2 :(得分:0)
您可以直接使用XMLHttpRequest
var oReq = new XMLHttpRequest();
oReq.open("GET", url);
oReq.send();
答案 3 :(得分:0)
使用$.ajaxSetup()
定义应该使用或可能被覆盖的选项
$.ajaxSetup({
url: "",
success: success,
error: error
});
此处调用$.ajax()
将使用url
定义的success
,error
函数,$.ajaxSetup()
函数。或者,如果应更改settings
,请传递应在$.ajax()
来电时更改的设置;例如。;尽管设置了新的$.ajax({url:"abc"}).always(fn)
,success
仍然会定义error
,url
个函数。