Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置jQuery.ajax,然后执行_Javascript_Jquery_Ajax - Fatal编程技术网

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
方法