ajax如何取消挂起的请求

来源:java认证发布时间:2012-11-12 12:48:01java认证视频

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

新建一个index.html
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
p{pst-style-type:none;}
.tab{
    width:240px;
    margin: 50px auto;
}
.nav ul{
    clear:both;
}
.nav ul p{
    margin-right: 4px;
    padding: 1px 6px;
    border:1px sopd #ccc;
    width:60px;
    background: #f1f1f1;
    float: left;
    text-apgn: center;
    cursor: pointer;
}
.nav ul p.selected{
    color:#fff;background:blue;
}

#box{
    width:238px;
    border: 1px sopd #ccc;
    height: 100px;
    clear: both;
    overflow: hidden;
}
.addBg{
    background: url('./img/loading.gif') no-repeat center;
}
</style>
<script src="./js/jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(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 p').cpck(function()
    {

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

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

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

    });
});
</script>
</head>
<body>
<div class="tab">
    <div class="nav">
        <ul>
            <p class="selected" name="1">tab 1</p>
            <p name="2">tab 2</p>
            <p name="3">tab 3</p>
        </ul>
    </div>

    <div id="box">

    </div>
</div>    
</body>
</html>

再建立一个4.php文件
代码如下:

<?php
sleep(1);
if(isset($_GET['what']))
{
    switch($_GET['what'])
    {
        case 1:
            echo '111111111111111';
            break;
        case 2:
            echo '22222222222222222';
            break;
        case 3:
            echo '33333333333333333';
            break;
        default:
            echo '没有内容';
    }
}

还要建一个文件夹js,里面放一个jquery-1.4.4.min.js文件,不一定是1.4.4版本;
建一个文件夹img,里面放一个loading.gif等待的图片

将index.html +  4.php + js(文件夹) +img(文件夹)放到www文件中,用浏览器运行

TAG: AjaxajaxAJAX

 -5-3-1-+1+3+5

评分:0

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答