使用分类广告网站项目和使用和开源框架" osclass",我尝试使用AJAX api调用加载每个类别计数,但有时它不会返回准确的结果
实施例: 数据库中的活跃汽车总数:71 但API返回68
刷新chrome缓存后,我得到确切的数字:这是我的简单API代码:
$result = $con->query("SELECT pk_i_id FROM oc_t_item where pk_i_id in (select fk_i_item_id from oc_t_item_location where fk_i_region_id=$id) and fk_i_category_id=$cat and dt_expiration >= now() and b_enabled=1 and b_active=1") or die(mysql_error());
$count= mysqli_num_rows($result);
$array = mysqli_fetch_row($result);
}
else{
$result = $con->query("SELECT pk_i_id FROM oc_t_item where fk_i_category_id=$cat and dt_expiration >= now() and b_enabled=1 and b_active=1") or die(mysql_error());
$count= mysqli_num_rows($result);enter code here
$array = mysqli_fetch_row($result);
}
echo json_encode($count);
我认为它的缓存相关问题,但我不知道如何处理该问题,帮助将不胜感激!
答案 0 :(得分:2)
当向服务器调用ajax请求时,向参数添加任意由随机或时间生成的唯一密钥。
例如
url = 'getData.php?unique=' + Math.random();
答案 1 :(得分:0)
就像我在评论中解释的那样,应用程序的状态似乎在两个GET请求之间发生了变化。这不应该发生:REST API - why use PUT DELETE POST GET?
您总是向服务器发出某种请求,如果网站是GET,有时是POST(当您通过表单发送数据时)。
@newman的答案很好。您必须发出不同的请求,以便服务器/浏览器不会返回该URL的预先计算和缓存的值,但实际上会逐出该请求。
您还可以使用时间戳(以毫秒为单位的javascript)保证始终返回唯一编号:
url = 'getData.php?unique=' + new Date().getTime();