gpt4 book ai didi

jquery - 服务器请求的 Ajax 响应错误

转载 作者:行者123 更新时间:2023-12-01 08:21:51 24 4
gpt4 key购买 nike

嗨,我有一个ajax代码如下:

$.ajax({
type:"POST",
url: 'sample.php',
data:"data="+data,
success: function(server_response) {
$('.functions').ajaxComplete(function(event, request){

if(server_response == 0)
{
showmsg('An email with instructions to reset password has been sent to your email address. Please check it.');
}
else if(server_response == 1)
{
showmsg('Email address was not found in our database. Please enter a valid email address');
}
else
{
showmsg('Some problem occured while sending you an email. Please try again.');
}


exit();
});

代码第一次就可以正常工作。但是,如果我提交代码而不刷新页面,则会收到之前的响应。就像我第一次加载页面并且从 example.php 得到的响应为 0 一样,消息会正确显示。但是,如果我在没有页面刷新的情况下进行 ajax 调用,并且从 example.php 获得响应为 1,则会显示上一条消息。无论我得到什么输出,我都会收到相同的消息,直到刷新页面。有什么问题?代码工作正常。

最佳答案

您的回复正在被缓存,因此您需要防止这种情况发生。如果您使用 jQuery,可以使用三种广泛使用的解决方案。

设置 jQuery(指示 AJAX 调用不缓存结果)

$(document).ready(function(){
$.ajaxSetup({
cache: false
});
});

随机数学种子(添加到 URL 中,使服务器相信这是一个新请求)

$.ajax({
type:"POST",
url: 'sample.php?rnd=' + Math.random(),
data:"data="+data,
success: function(server_response) {
//... rest of the code
});

使用当前时间戳作为种子(与之前相同,但使用当前时间戳)

$.ajax({
type:"POST",
url: 'sample.php?rnd=' + Date().getTime(),
data:"data="+data,
success: function(server_response) {
//... rest of the code
});

第一个选项非常适合在单个页面上发出大量 Ajax 请求且没有实际缺点的情况。

第二个选项几乎总是一个不错的选择。它也没有特别的缺点。

第三个选项也不错,但对于每秒发出多个 AJAX 请求的页面可能很危险,因为有时相同的时间戳可能用于两个不同的请求,并且后续调用将收到缓存的数据。

编辑:如果没有$(document).ready()出现在页面上,可以将其添加到结尾 </head> 之前的标题部分标签。

<head>
<!-- Whatever code already exists in the head section -->
<script type="text/javascript">
$(document).ready(function(){
$.ajaxSetup({
cache: false
});
});
</script>
</head>

关于jquery - 服务器请求的 Ajax 响应错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6889361/

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