我在構建的應用程序中遇到問題。我已經閱讀了許多有關類似問題的線索,並已應用這些線索中給出的建議。然而,問題依然存在,因此我寫這個。緩存的Ajax調用
的設置進行如下:
- 我有3 PHP文件:
index.php
,step_one.php
和calculation.php
。 從
index.php
,我順利通過Ajax調用是加載step_one.php
如下:$(document).ready(function() { var nocache = Math.random() * new Date().getTime() + Math.random(); $("#bookings").click(function() { $.ajax({ url: 'step_one.php?cach='+nocache, type: 'post', cache: false, success: function (data) { $("#contentLeft").html(data); } }); }); });
注:step_one.php
是HTML form.Then在step_one.php
,我在輸入數據形式,並且經由另一個Ajax調用即作爲表單數據發送給calculation.php
如下:
$("#viewprice").click(function() {
var nocache = Math.random() * new Date().getTime() + Math.random();
$.ajax({
url: 'calculate_quote.php?cache=' + nocache,
type: 'post',
dataType: 'json',
cache: false,
data: $("#stepOneForm").serialize(),
success: function (data) {
console.log(data);
$(".quote").append(data);
$(".quote").show();
document.getElementById("price").value = data;
}
});
});
的calculation.php
文件,根據它收到的數據計算價格並將json
返回到step_one.php
。我這是怎麼回json
從calculation.php
:
header('Content-Type: application/json');
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Expires: 0'); // Proxies.
echo json_encode($data);
注:我第一次點擊#viewprice
按鈕,價格是正確和成功返回step_one.php
。但是,如果在step_one.php
中輸入新數據並重新點擊#viewprice
按鈕,則不會從calculation.php
返回任何內容。當我檢查網絡數據時,我看到calculation.php
被複制到那裏,只有第一個Ajax調用會響應其中的數據。
而這個在xamp本地機器上運行。 請你幫忙嗎?我在這裏做錯了什麼?
應該:'url:'step_one.php?cach ='+ nocache,'be:'url:'step_one.php?cache ='+ nocache,'? –
@RyanVincent查詢字符串的名稱並不重要,只要相應的*值**是隨機的,那麼'cach'和'cache'就會做同樣的事情(不緩存請求),所以這不應該成爲問題。我認爲它與OP加載請求和腳本的方式有關,但是我在這裏錯過了全部案例(張貼您認爲相關的內容會留下很多**相關**代碼,其他開發者需要幫助。) – SidOfc
@semu我會首先檢查一下,看看這些動作是否真的發生在JS中(例如,正確的* events *被解僱),並且你可以通過將'console.log('got here')'放在你的clickhandler for'$('#viewprice')' - 這樣,無論何時在控制檯/ devtools打開的情況下單擊該按鈕,如果事件觸發,您都會看到「到達此處」,以便您知道它是否位於該處理程序中的某處或不。您可以爲每個處理程序執行此操作,以更快速地找到錯誤,並可能完全解決您的問題! – SidOfc