求助!当通过其他设备访问本地服务器网站时bug频出

各位大佬好,

我用 ajax 和 php 还有 session 做了一个查询数据库信息的功能。

具体流程是这样,我先通过js获取关键字,然后用ajax传个php,用的是POST方法。然后在用php把查询结果放到session里面,跳转网页以后,通过  js 里面的 XMLHttpRequest() 这玩意儿读取session里面的信息,然后进行动态编辑网页。

在本地服务器那台电脑上进行测试的时候没有发现任何问题,但是当我用其他电脑或者平板电脑访问时就出问题了,具体就是有时候搜了没有反应,还是显示的上一次搜索的结果。就比如第一次我搜三年级二班所有同学的名字,结果出来以后没什么问题;第二次我搜三年级五班所有同学的名字,但是网页跳转以后还是显示的是上一次的搜索结果。这个时候如果你在继续搜索一次三年级五班所有同学的名字,它可能又能加载出来了。。。

在本地服务器那台电脑上搜索时经过多次测试,一点问题没有。但是如果换到其他设备这个问题就出来了,我换了几台电脑测试都有这样的问题,有大佬知道为什么吗?

应该是浏览器缓存的问题

由于浏览器的缓存机制,当我们使用XMLHttpRequest发出请求的时候,浏览器会将请求的地址与缓存中的地址进行比较,如果存在相同记录则根本不向服务器发出请求而直接返回与上一次请求相同内容。


处理方案:

https://blog.csdn.net/yellow88488/article/details/53675615/

 

一般是在请求的url后面加上时间戳就可以,让浏览器每次发出的是不同的url。

    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'xxxx.php?time='+(new Date()).getTime(), true);
 

ajax发起请求的时候需要带上时间戳,不然相同路径的请求他会识别成同一个,直接给你返回缓存的数据。还有就是异步请求的问题,如果延迟比较高的话可能会导致不能及时渲染他直接就走完后面的处理逻辑,这时最好是在渲染的时候做个处理,保证是在请求到数据之后刷新

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

就是他访问的同一个地址就会读取缓存不重新加载,如果加上时间搓就每次是不同地址他就会重新加载,但是每次重新加载流量消耗会更大。

添加一个较长的随机数提交试试

每次请求带上个随机数,相当于加版本号

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

这个需要你通过浏览器的F12控制台,看一下请求和响应结果,根据情况来判断是是前端还是后端的问题。