2016-10-20 102 views
0

帖子編輯頁面重載之前執行:僅供參考,原來的Firefox 48是問題。使用Firefox 50時,代碼將按預期執行。AJAX請求不因等待時間

我們已經在我們部門有一個小錯誤一些舊的代碼,但因爲我不是很精通AJAX我有解決它的問題。

預期功能是,用戶點擊網頁上的元件,這觸發在數據庫中改變一個號碼的請求。然後等待一段時間,然後重新加載頁面。這是在onclick事件中執行的相關代碼:

request('../lib/ajax_lists.php','sideedit',data); 
wait(500); //waiting until x ms passed 
window.location.reload(); 

我檢查了這些行,它們似乎按預期工作,但不在一起。 什麼情況是瀏覽器等待,然後重新加載,但數據庫沒有改變。 然後我檢查了請求函數的工作原理,發現數據庫查詢沒有問題。但爲了查看我打印到請求答案的查詢,我必須禁用重新加載。現在我可以看到該查詢,但令我驚訝的是數據庫也發生了變化。

我做了一些更多的測試,這是結果:

  • 包括如果 啓用了頁面重載函數的數據庫查詢它不能被正確執行的請求。
  • 如果我註釋掉重新導入功能,如預期進行的請求,但當然沒有需要重裝的看到的變化。
  • 等待時間似乎並不重要。我將它提升到5000ms,但仍然無法工作。

任何想法?

+1

這是* *舊代碼。隨着AJAX你normall想從AJAX的響應和更新頁面[無需重新加載。(http://jayblanchard.net/basics_of_jquery_ajax.html) –

+0

瀏覽器往往也重裝之前中止未決的請求,也許這導致遠程腳本失敗。 [在PHP中有一個控制這個設置](http://php.net/manual/en/function.ignore-user-abort.php) – apokryfos

+0

我知道如果設計不同,重新加載不是必需的,但重寫是不可能的。 我不得不嘗試設置,但我仍然不知道爲什麼不執行請求正確,即使有足夠多的時間來做到這一點。 – user7048513

回答

0

你可以試試下面的代碼

<script type="text/javascript"> 
    setTimeout(function(){ 
     window.location.reload(); 
    }, 500); 
</script> 
+0

但是,這將只是重新加載頁面,無論用戶輸入,而不是在用戶點擊元素並觸發重新加載之後,對吧? – user7048513

+0

在頁面加載再次加載500毫秒後,用戶不需要觸發器。但需要用戶觸發,代碼塊在$('button')中。點擊(函數(){setTimeout(function(){window.location.reload(); },500); }); –