2013-09-27 89 views
0

我一直在使用由其他人構建的網站,每當網站中有Ajax調用時,都會顯示一個顯示進度欄的div。在曾經的例子中,雖然我想隱藏這個欄(或者更好:不顯示它),但我不知道如何在這個函數中獲得我的Ajax變量。在jQuery函數中使用Ajax變量

Ajax調用是非常簡單的:

$.ajax({url: url, ... 

,並在代碼中添加的功能是其他somwhere:

jQuery(function ($) { 

    $(document).ajaxStart(function() { 
     $('#progressbar').modal('show'); 
    }); 

我喜歡的東西添加到AJAX調用,比如

$.ajax({url: url, hideProgressBar: true, ... 

然後使用false停止顯示進度條。任何人?

+0

您無法訪問ajaxStart中的ajax選項。 –

回答

4

設置global選項設置爲false在AJAX性能該呼叫:

global: false, 
+0

謝謝你做到了。不知道它是如何工作的。 –

+0

@MichaelNieuwenhuizen'ajaxStart'是一個全局處理函數,你可以通過設置'gloabl:false'屬性來關閉它。當你這樣做時,全局處理程序都不會運行,因此你的代碼顯示進度條永遠不會運行:) – Archer

+0

謝謝!這很有道理。 –

1

使用ajaxSend而不是ajaxStart ...

$(document).ajaxSend(function (e, jqXHR, options) { 
    if (options.showProgressBar) { 
     $('#progressbar').modal('show'); 
    } 
}); 

然後讓你的Ajax調用是這樣的...

$.ajax({ 
    url: "http://etc..", 
    showProgressBar: false 
}); 

你可以把任何選項你喜歡在ajax調用中,並且可以在發送事件處理程序中的選項對象中訪問它們。

注:我知道我已經使用showProgressBar,你說的是隱藏它,但那只是我。如果需要,請更改以適應:)

+0

我明白showProgressBar更有意義,但它是一個很大的網站,我必須在網站中的所有ajax調用中添加「showProgressBar:true」。由於它是一個大網站,我不想把事情弄糟,所以在我的代碼中添加hideProgressBar會更容易和更安全。 –

+0

@MichaelNieuwenhuizen好的,我明白了。上面的tymeJV的答案肯定更適合您的需求。 – Archer