ajax取消挂起请求的处理方法

前端技术 2023/09/03 PHP

我们在切换选项卡的时候,如果使用的是ajax技术,会碰到如下情况:点击tab1选项,服务器发出一个Ajax请求获取该选项tab1的内容数据。如果请求正在处理,并且在此过程中你点击了tab2选项并发送一个新的请求,服务器现在就有了两个请求挂起。页面出现的结果是,在显示的数据内容时,先显示tab1选项的内容数据,再接着显示tab2选项内容。 在这种情况下,我们应该取消tab1挂起的请求,仅允许处理当前(tab2)请求 新建一个index.html 代码如下:

复制代码 代码如下:

<style><!--
*{margin:0;padding:0;}
li{list-style-type:none;}
.tab{
width:240px;
margin: 50px auto;
}
.nav ul{
clear:both;
}
.nav ul li{
margin-right: 4px;
padding: 1px 6px;
border:1px solid #ccc;
width:60px;
background: #f1f1f1;
float: left;
text-align: center;
cursor: pointer;
}
.nav ul li.selected{
color:#fff;background:blue;
}

#box{
width:238px;
border: 1px solid #ccc;
height: 100px;
clear: both;
overflow: hidden;
}
.addBg{
background: url(\'./img/loading.gif\') no-repeat center;
}
--></style>
<script type=\"text/javascript\" src=\"http://www.phpstudy.net/itoks/admin/js/jquery-1.4.4.min.js\"></script>
<script type=\"text/javascript\">// <![CDATA[
$(function()
{
var ajax;
$.ajax({
type: \'GET\',
url: \'4.php\',
data: \'what=1\',
success:function(data)
{
//加载成功后移除小图标
// $(\"#box\").removeClass(\"addBg\");
// $(\'#box\').html(data);
$(\"#box\").removeClass(\"addBg\").html(data);

},
beforeSend:function() //
{
//加载过程中得等待小图标,先清空box的内容
$(\"#box\").html(\'\').addClass(\"addBg\");
}
});

$(\'.nav ul li\').click(function()
{

$(this).addClass(\'selected\')
.siblings().removeClass(\'selected\');
var liName = $(this).attr(\'name\');
//alert(liName);
//加载过程中得等待小图标,先清空box的内容
$(\"#box\").html(\'\').addClass(\"addBg\");

if(ajax)
{
ajax.abort();
//alert(ajax);
}

ajax = $.get(
\'4.php\',
{what : liName},
function(data)
{
//加载成功后移除小图标
$(\"#box\").removeClass(\"addBg\");
$(\'#box\').html(data);
}
);

});
});
// ]]></script>
<div class=\"tab\">
<div class=\"nav\">
<ul>
<li class=\"selected\">tab 1</li>
<li>tab 2</li>
<li>tab 3</li>
</ul>
</div>
<div id=\"box\"> </div>
</div>

本文地址:https://www.stayed.cn/item/8925

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。