gpt4 book ai didi

php - 缓存的 Ajax 调用

转载 作者:可可西里 更新时间:2023-10-31 23:38:54 25 4
gpt4 key购买 nike

我正在构建的应用程序有问题。我已经阅读了很多关于类似问题的帖子,并应用了这些帖子中给出的建议。但是,问题仍然存在,因此我写了这篇文章。

设置如下:

  1. 我有 3 个 php 文件:index.phpstep_one.phpcalculation.php
  2. 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表单,然后在step_one.php中,我在表单中输入数据,并将表单数据发送给计算.php 通过另一个 Ajax 调用如下:

$("#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。这就是我从 calculation.php 返回 json 的方式:

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 的本地机器上运行。你能帮忙吗?我在这里做错了什么?

最佳答案

我发现了让我头疼的错误。这是一个逻辑错误。

背景

出于安全原因,我在表单中使用了 token 。因此,对于每个表单,我在页面加载时生成一个 token 并将其存储在 session 中。然后当表单发送它的数据(包括 token )时,我首先检查接收到的 token 是否在 session 中 - 如果找到 token ,然后我使用接收值并使用它们计算 $data 然后我将它传递给 json_encode 函数。找到 token 后,我将其删除

因此,calculation.php 被缓存,因为我的 Ajax 代码是正确的。相反,问题是当我重新发送表单数据以进行重新计算时。重发时,session中的token已经被删除;因此,在 session 中找不到我与表单数据一起发送的 token 。因此,不会计算数据,也不会返回任何数据。

关于php - 缓存的 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com