设置jQuery.ajax然后执行

时间:2016-01-20 14:14:32

标签: javascript jquery ajax

假设我想创建一个var:

var ajax = $.ajax( url )
            .done( function (response) {
                //done body
            })
            .fail( function (jqXHR, status, errorThrown) {
                //fail
            })
            .always( function () {
                //always
            });

但我不希望它立即发送请求。我想做点什么:

ajax.execute();

在某些方面,或者可能只是取消它。这可能吗?

这个问题的关键是使用jQuery的ajax的完整功能而不使用包装器,或使用包装器,它可以使用所有当前的$ .ajax方法+可能是新的而无需添加代码。

4 个答案:

答案 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();

Mozilla specs for XMLHttpRequest

答案 3 :(得分:0)

使用$.ajaxSetup()定义应该使用或可能被覆盖的选项

$.ajaxSetup({
  url: "",
  success: success,
  error: error
});

此处调用$.ajax()将使用url定义的successerror函数,$.ajaxSetup()函数。或者,如果应更改settings,请传递应在$.ajax()来电时更改的设置;例如。;尽管设置了新的$.ajax({url:"abc"}).always(fn)success仍然会定义errorurl个函数。