jQuery ajax 我弄了个小实验

学习中,所以自己瞎做实验...

function ajaxSend_global(event, xhr, settings) 
{
    $("#info").append("<div><b>i am ajaxSend_global @ global ...</b><div>");
    $("#info").append("<div id='time'>结果搜索中...</div>");
    $("#info").append("</br>");
}

就是这个 结果搜索中... 是个静态提示..
怎么做成动态的?
我改成下面那个,就成了个死循环了,怎么让这个结果搜索中一直变?

function ajaxSend_global(event, xhr, settings) 
{
    $("#info").append("<div><b>i am ajaxSend_global @ global ...</b><div>");
    $("#info").append("<div id='time'></div>");
    $("#info").append("</br>");
    
    
    i=0;
    while (xhr.status!=200)
    {
        $("#time").text( '结果搜索中...' +i );
        i++;
    }

}
阅读 3.6k
5 个回答
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="info"></div>

<script src="jquery-2.1.4.min.js"></script>
<script>
    ajaxSend_global('shehe',4000,'heeh');
    function ajaxSend_global(event, xhr, settings) {
        $ ("#info").append ("<div><b>i am ajaxSend_global @ global ...</b><div>");
        $ ("#info").append ("<div id='time'></div>");
        $ ("#info").append ("</br>");


        var i=0,intervalId;
        if(xhr.status!=200){
            intervalId = setInterval(function () {
                $("#time").text('结果搜索中...' + (++i));
            },1000);
        }else {
            clearInterval(intervalId);
        }
    }
</script>
</body>
</html>

可以使用定时器。但是不要使用while。

你想要的效果,就是动态显示出ajax的状态吧。那可以看这个:

function getJson() {
    var sUrl,
        jData = {};

    jData['id'] = id;

    $('.textStatus').html('提交中');

    $.ajax({
        type: 'post',
        url: sUrl,
        data: jData,
        async: true,
        dataType: 'json',
        success: function (m) {
            $('.textStatus').html('提交成功');
        },
        error: function(xhr, status, error) {
            $('.textStatus').html('提交失败');
        }
    });
};

三个状态一一对应,其中error的部分,推荐可以稍微深入了解一下。

你想要的是加载的过程中想显示类似等待中1[2,3,4,5...],是么?
你用while是没有什么意义的,如果是每隔1s变动一次,while是无法控制时间的,基本上是瞬间完成。
建议:

var i = 0;
var timer = setInterval(function(){
    $("#time").text( '结果搜索中...' + (++i) );
}, 1000)

当成功时清除定时器即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题