簡體   English   中英

設置jQuery.ajax然后執行

[英]Set jQuery.ajax then execute

假設我要創建一個變量:

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

Mozilla的XMLHttpRequest規格

使用$.ajaxSetup()定義應使用或可能被覆蓋的選項

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

在這里調用$.ajax()將使用urlsuccess函數和$.ajaxSetup()定義的error函數。 或者,如果settings應該改變,傳遞應該在改變設置$.ajax()調用; 例如; $.ajax({url:"abc"}).always(fn)仍將使用success ,定義的error函數,盡管設置了新的url

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM