Asp.net
jQuery 的 ajax 導致 FireFox 中的整個頁面刷新
我正在使用 jQuery 進行 ajax 呼叫。ajax 呼叫在 IE 7 中執行良好,但 FireFox 3 在進行此呼叫時總是會刷新整頁。ajax 呼叫正在發佈到 ASP.NET 頁面方法。
jQuery 有問題還是我只是缺少一些設置?
$.ajax({ async: false, type: "POST", url: "Default.aspx/DoSomething", data: "{" + parms + "}", contentType: "application/json; charset=utf-8", dataType: "json", cache: false, success: function(data) { succesfulPost(data); }, error: function(XMLHttpRequest, textStatus, errorThrown) { errorPost(textStatus, errorThrown); } });呼叫是通過一個 html 按鈕 onclick 事件進行的。我嘗試了
return false;進行此 ajax 呼叫的方法,但 FireFox 中的完全刷新仍在繼續。我試過設置 async = true,但這似乎不起作用。FireFox 只是繼續執行,不會等待後端返迴響應。FireFox(在 js 中)實際上是在 ajax 呼叫中產生錯誤。正如您在上面看到的,錯誤函式已定義,並且在我設置 async = true 時觸發。
return false 是您需要的,但是如果在您點擊該行之前發生 javascript 錯誤,那麼瀏覽器將繼續愉快地執行連結點擊或按鈕點擊事件。
您可以嘗試使用 try/catch 塊包圍潛在的問題區域。
或者你可以試試這個:
e.preventDefault作為處理程序中的第一條語句。這應該阻止預設事件的發生,我認為你可以提前呼叫它……我只是沒有嘗試過。編輯:我還想補充一點,ajax 錯誤:處理程序只擷取來自伺服器的錯誤……比如 403 或 500。您仍然應該將 ajax 呼叫包裝在 try/catch 中。