jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示

1.jquery ajax请求方式与提示用户正在处理请稍等

为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示。我们可通过设置$.ajax()下的参数beforeSend()来实现

初次使用$.ajax() ,我没有去区分过ajax的异步请求和同步请求的不同,刚开始使用同步请求,以至后来出现许多问题,特别在体验度方面。
异步和同步:
同步意味着执行完一段程序才能执行下一段,它属于阻塞模式,其表现在网页上的现象是——浏览器会锁定页面(即所谓的页面假死状态),用户不能操作其它的,必须等待当前请求返回数据。而使用异步方式请求,页面不会出现假死现象。
提升用户体验度:
当用户提交数据等待页面返回结果是需要时间的,有时这段等待时间比较长,为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示。我们可通过设置$.ajax()下的参数beforeSend()来实现,
eg: 
html关键代码

?


1

<div id="warning"></div>

js文件中的关键代码

?


1

2

3

4

5

6

7

8

9

10

$.ajax(function(){

.

.

.

//省略了一些参数,这里只给出async 和 beforeSend

async: false, //同步请求,默认情况下是异步(true)

beforeSend: function(){

$(‘#warning‘).text(‘正在处理,请稍等!‘);

}

});

注意,如果你按照同步设置 async: false, $(‘#warning‘).text(‘正在处理,请稍等!‘);在网页中根本没有出现效果,如果将$(‘#warning‘).text(‘正在处理,请稍等!‘);换成 alert(‘test‘);在发送请求前会立即看到弹出框,这说明 beforeSend:是执行了,但是换成别的诸如 $(‘#warning‘).text(‘正在处理,请稍等!‘); 在请求发出返回结果了都没有看到提示出现。关于这个问题,我是纳闷了很久,问题到底是什么我还是不清楚。
把同步请求改成异步请求,上面的问题就没有了,

?


1

2

3

beforeSend: function(){

$(‘#warning‘).text(‘正在处理,请稍等!‘);

}

会立即被执行。

2.Ajax等待数据返回时loading的显示

摘要: Ajax等待数据返回时loading的显示

"Ajax等待数据返回时loading的显示":

有时候ajax处理的数据量比较大的时候,用户等待时间会比较长,如果这个时候不提示用户等待的话,用户可以会觉得很不耐烦。这里介绍一下如何在ajax如何在处理数据时显示loading。

首先在html页面添加一个div层:

<div id="loading" style="color:#ffffff; display:none; position:absolute; top:80px; left:3em;"></div> 

这个div一开始是不显示的。

然后你可以在ajax请求函数中添加如下代码:

xmlreq.onreadystatechange = function()
{
    var sliderblank = document.getelementbyid("sidebar");
    // 让需要显示结果的层显示空白
    sliderblank.innerhtml = " "; 

    // 获得loading显示层
    var loadingdiv = document.getelementbyid("loading");
    // 插入loading图
    loadingdiv.innerhtml = "<img src=‘images/loading.gif‘ />";
    // 显示loading层
    loadingdiv.style.display = "";
    if(xmlreq.readystate == 4)
    {
        // 数据处理完毕之后,将loading层再隐藏掉
        loadingdiv.style.display = "none";
        //alert(xmlreq.responsetext);
        //document.getelementbyid(‘content2‘).innerhtml = xmlreq.responsetext;
        // 输出处理结果
        runxml(xmlreq.responsetext);
    }
}   

就是如此简单!

下面再附另一段参考代码:

xmlhttp.onreadystatechange = function(){
    //displace loading status
    var loadingdiv = document.getelementbyid("loading"); // get the div
    loadingdiv.innerhtml = "loading..."; // insert tip information
    loadingdiv.style.right = "0"; // set position, the distance to the right border of current document is 0px
    loadingdiv.style.top = "0"; // set position, the distance to the top border of current document is 0px
    loadingdiv.style.display = ""; // display the div
    //load completed
    if(xmlhttp.readystate == 4) {
        //hide loading status
        loadingdiv.style.display = "none"; // after completed, hidden the div again
        loadingdiv.innerhtml = ""; // empty the tip information
        //process response
        if(xmlhttp.status == 200) {
            var str = xmlhttp.responsetext;
            /* do something here ! */
        }
        else
        alert("error!" + "nstatus code is: " + xmlhttp.status + "nstatus text is: " + xmlhttp.statustext);
    }
}

转载:http://www.nowamagic.net/librarys/veda/detail/564

时间: 2024-08-08 09:45:27

jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示的相关文章

jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是"application/json", (3)data传递的数据必须是严格的json数据,如"{'a':'aa','b':'bb'}",而且参数必须和静态方法的参数一 一对应 (4)aspx的后台方法返回的数据默认形式是"{'d':'返回的内容'}",所

jQuery ajax 请求php遍历json数组到table中

html代码(test.html),js在html底部 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test-jquery-ajax-list</title> </head> <body> <div class="main"> <table

jQuery Ajax 请求报长度过长的错误:Error during serialization or deserialization using the JSON JavaScriptSerializer

{"Message":"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set 在web项目的web.config <configuration>节下增加 <system.web.extensions>    <scripting>    

jquery - ajax 请求使用

1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设置. 4.async: 要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求.如果需要发送同步请求

jquery ajax请求成功,返回了数据,但是不进success的问题 【转】

这几天一直被 ajax请求成功,返回了数据,但是不进success的问题困扰着,怎么弄就是解决不了,总以为 是:$(document).ready(function(){});没起作用,一直找页面加载的方法来试,整了好几天没整出来....今天比较幸运, 在网上找到了一篇关于这方面问题的文章,按上面的方法一试,果然ok了,哈哈哈,真是太高兴了....终于解决这个问题了. 这个问题的原因(来自http://www.myexception.cn/ajax/413061.html的拷贝内容): ----

jQuery ajax 请求HttpServlet返回[HTTP/1.1 405 Method not allowed]

1.问题使用jQuery的ajax请求 Servlet 时,返回没有进入ajax的success回调函数,浏览器控制台显示 [HTTP/1.1 405 Method not allowed]. 2.解决方法网上调查,大多都是如下解释 Apache.IIS.Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误. 即,将出错页面表单的method=“post”改为“get”即可 改了 ajax 请求方法,

JQuery AJAX请求aspx后台方法

利用JQuery封装好的AJAX来请求aspx的后台方法,还是比较方便的,但是要注意以下几点: 1.首先要在方法的顶部加上[WenMethod]的特性(此特性要引入using System.Web.Services;命名空间) 2.其次方法一定要是静态(static)方法. 下面我做了几个不同的调用后台方法的例子: 1.不带参数返回string方法 前台代码: 1 //不带参数返回string方法 2 $.ajax({ 3 type: "post", 4 url: "后台返回

以ajax请求方式进行文件下载操作失败的原因及解决方案

一.失败的原因 那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png.文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的.文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序. 二.解决方案 1)可以使用jquery创建表单并提交实现文件下载: var form = $("<form>"); form.

jQuery ajax请求struts action实现异步刷新

第一步:导入相关jar包,本样例需导入struts相关jar包,json-lib.jar,gson-2.1.jar可以任意选择,但是这里需要都导入,因为为了做测试,两种jar包的转换方式都用到了. 第二步:配置web.xml <?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/jav