2015-02-06 60 views
1

我有以下js函數將發送請求發送回主索引頁面。此腳本在Chrome中工作,但不會在Firefox中發送任何參數,同時仍回發到頁面。我在檢查Firefox的頁面後,通過網絡標籤驗證了這一點。Javascript不發送Firefox中的發佈參數

function addDrive(ans){ 
    $.post("index.php", {add_drive: ans }); 
    location.reload(); 
} 

此功能通過的onClick叫上一個按鈕,我已經把我的網頁上:

<button onClick="addDrive('y')">Add Drive</button> 

我已經使用了能與Firefox和Chrome和我曾在過去類似的功能只是不知道爲什麼這不適用於Firefox。

+3

您正在重新加載。這意味着頁面正在執行的任何操作都會被加載的「新」頁面中斷,從而導致您的ajax請求被中斷。 – 2015-02-06 15:30:06

+2

您是否試過'$ .post(「index.php」,{add_drive:ans})。done(function(){location.reload()});'? – dfsq 2015-02-06 15:32:12

回答

1

我的建議是做這樣的事情:

function addDrive(ans) { 
    $.post("index.php", {add_drive: ans}).then(function() { 
    location.reload(); 
    }); 
} 

這將確保你只有在重新加載頁面成功完成後請求。您也可以提供success處理程序,而不是使用此承諾API。您也可以在always處理程序中執行相同的操作,以確保即使請求失敗,它也會重新加載頁面,但這對您的要求是主觀的。

但是,我認爲這看起來並不是很好的做法,如果你不得不重新加載頁面,你可能只是有一個表單併發布,而不是嘗試使用jQuery處理程序發佈。您可以在javascript中執行類似form.submit()的操作,並且只要表單上的方法設置爲'POST',它就會提交表單並通過發佈請求提交表單中的數據,這樣您就不必手動重新加載頁面,你可以從服務器端做到這一點。

0

嘗試成功後後重新載入網頁:

$.post("index.php", {add_drive: ans}).done(function(data) { 
    location.reload(); 
});