我在构建的应用程序中遇到问题。我已经阅读了许多有关类似问题的线索,并已应用这些线索中给出的建议。然而,问题依然存在,因此我写这个。缓存的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