精华内容
下载资源
问答
  • Ajax技术】Ajax技术概述使用Ajax的异步请求方式,浏览器无须频繁的加载新页面,服务器的响应不再是整个页面内容,而只是必须更新的部分数据。Ajax可以减轻服务器和带宽的负担,提供更好的服务。总结:Ajax效果: 1....

    【Ajax技术】Ajax技术概述

    使用Ajax的异步请求方式,浏览器无须频繁的加载新页面,服务器的响应不再是整个页面内容,而只是必须更新的部分数据。Ajax可以减轻服务器和带宽的负担,提供更好的服务。总结:Ajax效果: 1.改善表单验证方式,不需要...

    文章

    光仔december

    2015-07-31

    1107浏览量

    Ajax初步理解

    Ajax的核心是JavaScript对象XmlHttpRequest,这个对象为向服务器发送请求和解析服务器响应提供了流畅的接口。XmlHttpRequest可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。XHR对象由IE5率先引入,在...

    文章

    橘子红了呐

    2017-11-21

    956浏览量

    ajax基础

    当Ajax引擎的状态属性为readyState为4时,说明服务器的响应已经发送给Ajax请求了. HTTP状态码(xmlHttpRequest) 100:信息类,表示web浏览器请求,正在进一步的处理中 200:成功,表示用户请求被正确接收正在进一步的处理...

    文章

    龙神之怒

    2017-09-03

    1092浏览量

    956b114505e19544f53bcd13fecf5433.png

    云服务器 精选特惠

    新用户低至0.55折起,爆款免费试用3个月

    广告

    Web:AJAX的详解

    10、一个HTTP响应一般由三部分组成(1)一个数字和文字组成的状态码,用来显示请求是成功还是失败(2)响应头,响应头也和请求头一样包含许多有用的的信息,例如服务器类型,日期时间,内容类型和长度等。(3)响应体,也...

    文章

    吞吞吐吐的

    2017-10-18

    978浏览量

    [存档]名词解释

    由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于...

    文章

    长征6号

    2017-03-27

    646浏览量

    Ajax学习

    XMLHTTP默认(也推荐)不是同步请求的,也就是open方法并不等服务器响应数据才返回,而是监听服务器 返回的数据,因此需要监听onreadystatechange事件。xmlHttp.onreadystatechange=function(){ if(xmlHttp....

    文章

    最美的回忆

    2017-02-09

    734浏览量

    《Web异步与实时交互——iframe AJAX WebSocket开发...

    这种技术通过异步通信和响应,来完成页面的局部刷新,以此改善传统Web应用中大量不必要的整页刷新,从而提高响应的效率,让用户更快地得到操作结果,减少中间的等待时间。同时AJAX作为浏览器端技术,极大地改善页面...

    文章

    异步社区

    2017-05-02

    1821浏览量

    Mui-app与服务器之间的交互原理、mui ajax使用

    若超过设置的超时时间(非0的情况),依然未收到服务器响应,则触发error回调 type 请求方式,目前仅支持'GET'和'POST',默认为'GET'方式 headers 指定HTTP请求的Header 一个完整示例 lt;script type="text/javascript...

    文章

    科技小毛

    2017-10-12

    1048浏览量

    Ajax学习

    XMLHTTP默认(也推荐)不是同步请求的,也就是open方法并不等服务器响应数据才返回,而是监听服务器 返回的数据,因此需要监听onreadystatechange事件。xmlHttp.onreadystatechange=function(){ if(xmlHttp....

    文章

    shy丶gril

    2016-05-23

    1243浏览量

    Ajax大显身手

    改进版:防止每次发送发送Ajax请求,需要在发送请求的url上带一个时间参数。GET:不会改变服务器上任何事物的数据机获取方式。如果需要,还可以通过URL传入少量的数据给服务器。POST:传送数据给服务器,因为某种方式会...

    文章

    liminjun88

    2016-04-21

    869浏览量

    Mui-app与服务器之间的交互原理、mui ajax使用

    若超过设置的超时时间(非0的情况),依然未收到服务器响应,则触发error回调 type 请求方式,目前仅支持'GET'和'POST',默认为'GET'方式 headers 指定HTTP请求的Header 一个完整示例 lt;script type="text/javascript...

    文章

    科技小毛

    2017-10-12

    1454浏览量

    《Web异步与实时交互——iframe AJAX WebSocket开发...

    需要注意的是,在第4步服务器响应请求后是否断开连接,要看协议版本(HTTP 1.0协议在服务器响应后,会关闭连接;HTTP 1.1协议在服务器响应后,默认会保持连接,直到超时或出错),要看是否客户端主动请求断开连接、...

    文章

    异步社区

    2017-05-02

    1437浏览量

    【AJAX】AJAX技术详细解析以及实例

    在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。当 readyState 等于 4 且状态为 200 时,表示响应已就绪: xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState...

    文章

    谙忆

    2016-08-23

    836浏览量

    AJAX编程实践

    Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约...

    文章

    朱培

    2016-06-21

    1049浏览量

    js ajax 异步 同步 区别

    这意味着如果响应时间很长,则用户在浏览器收到响应之前是将无法与其交互的。基于这个原因,Ajax应用程序开发的最佳实践是,使用异步请求来实现数据获取,使用同步请 求来实现与服务器之间发送和接收简单的消息。用...

    文章

    西游不取经

    2015-09-17

    604浏览量

    AJAX-基本知识

    通过Ajax,JavaScript无需等待服务器响应,而是: 1.在等待服务器响应期间执行其它脚本 2.当响应就绪后对响应进行处理 当Async=True时,应设置onreadystatechange事件中处于就绪状态时的执行函数: xmlhttp....

    文章

    suifeng3051

    2013-12-17

    1024浏览量

    ASP.NET MVC实战:jQuery调用Ajax缓存

    服务器端响应里设置过期时间 服务器端设置过期时间用于缓存数据,该条目在客户端将依据过期时间被缓存。JS代码: ('#expires').click(function(){ ajax({ url:'/Home/Expires', ifModified:false, cache:true, ...

    文章

    余二五

    2017-11-16

    719浏览量

    有状态的 web 应用

    服务器返回的响应页面里依然有我们的用户名显示着,这样看来这些应用似乎都会维持它们的状态。在本章,我们会通过讨论一下这是怎么回事,看看 web 开发者常用的实现“有状态”体验的技术手段。同时,也会讨论一些...

    文章

    王爵nice

    2016-05-14

    1523浏览量

    有状态的 web 应用

    服务器返回的响应页面里依然有我们的用户名显示着,这样看来这些应用似乎都会维持它们的状态。在本章,我们会通过讨论一下这是怎么回事,看看 web 开发者常用的实现“有状态”体验的技术手段。同时,也会讨论一些...

    文章

    王爵nice

    2016-05-14

    1334浏览量

    PHP开源AJAX框架

    服务器端响应由于xajax响应对象创建,该对象提供非常多的命令比如:给一个HTML元素赋值,显示一个警告对话框等。还支持自定义脚本输出。所有特定浏览器代码(如使用XMLHttpRequest)都是抽象的,并且发送各种数据类型...

    文章

    wangccsy

    2008-11-08

    639浏览量

    有状态的 web 应用

    服务器返回的响应页面里依然有我们的用户名显示着,这样看来这些应用似乎都会维持它们的状态。在本章,我们会通过讨论一下这是怎么回事,看看 web 开发者常用的实现“有状态”体验的技术手段。同时,也会讨论一些...

    文章

    王爵nice

    2016-05-14

    933浏览量

    ajax中的高级请求和响应

    相反,服务器只会返回资源的 头(header),这包括响应中内容最后修改的时间、请求资源是否存在和很多其他有用信息。您可以在服务器处理并返回资源之前使用这些信息来了解有关资源的信息。对于这种请求您可以做的最...

    文章

    slalx_1986

    2008-10-20

    1085浏览量

    ThingJS:Ajax仅用20行代码进行数据维护

    ThingJS的理念核心是轻量化,我们推荐Ajax数据维护方法,不用花时间更新全部页面,只需要改变少量信息,即可快速回应用户。为什么Ajax 通过XHR 实现Ajax 通信的一个主要限制,来源于跨域安全策略。默认情况下,XHR ...

    文章

    游客g5eizyrh6cvnm

    2020-08-26

    58浏览量

    AJAX-基本知识

    通过Ajax,JavaScript无需等待服务器响应,而是: 1.在等待服务器响应期间执行其它脚本 2.当响应就绪后对响应进行处理 当Async=True时,应设置onreadystatechange事件中处于就绪状态时的执行函数: xmlhttp....

    文章

    老嗨

    2013-12-17

    1317浏览量

    《Web异步与实时交互——iframe AJAX WebSocket开发...

    为了解决之前技术更新页面时,服务器端响应时间长、页面刷新速度慢、用户体验度差等问题,使用iframe模拟异步交互技术来实现局部刷新页面获取数据。iframe是一种HTML标签,它会创建包含另外一个文档的内联框架。通过...

    文章

    异步社区

    2017-05-02

    1531浏览量

    《jQuery与JavaScript入门经典》——2.5 分析网络...

    本节书摘来自异步社区《jQuery与JavaScript入门经典》一书中的第2章,第2.5节,作者:【美】Brad Dayley著,更多章节内容可以访问云栖...以JSON方式接收AJAX请求的响应时,这很有用,让您能够查看从服务器获取的数据。

    文章

    异步社区

    2017-05-02

    1046浏览量

    Ajax原理一篇就够了

    3.服务器响应处理(区分同步跟异步两种情况) responseText 获得字符串形式的响应数据。responseXML 获得XML 形式的响应数据。①同步处理 1.xhr.open("GET","info.txt",false);2.xhr.send();3.document....

    文章

    我是小助手

    2018-06-13

    934浏览量

    浅析ajax原理与用法

    javaScript回调函数.(客户端可以不需要等到服务器响应才能运行) (2)XML是一种标记语言,是ajax与后台交互传输数据格式之一 (3)ajax只能向同源网站发起Http请求(端口,协议,域名都相同),跨域请求会报错 利用Ajax可以...

    文章

    蓝色の流星VIP

    2018-05-24

    1049浏览量

    AJAX服务器异步通信

    AJAX的工作原理相当与在用户和服务器之间加了一个中间层,使用户请求与服务器响应异步化(我们经常用它来做数据校验)。这样还可以把以前的一些服务器负担的工作转交给客户端,利用客户端闲置的处理能力来处理这些...

    文章

    聚优云惠

    2013-11-15

    646浏览量

    Ajax学习-XMLHttpRequest对象

    onreadystatechange属性存有处理服务器响应的函数。我们定义一个空的函数,可以同时对onreadystatechange属性进行设置: xmlHttp.onreadystatechange=function() { 我们需要在这里写一些代码 } readyState属性: ...

    文章

    技术小胖子

    2017-11-14

    674浏览量

    展开全文
  • $.ajax({ url: '@Url.Action(...现在的问题是,当我使用Ajax调用MVC方法,当中处理任务的时间比较长,会等待2个多小时,等数据处理完之后就没响应了,没有进入success方法,且傻在那里了。 有劳各位高手帮忙谢谢。
  • 理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上的数据流量。而然,实际情况却并不总是这样。用户时常会抱怨用了AJAX的系统响应速度反而降低了。 笔者从事AJAX方面的研发多年,参与开发了...
  • ajax请求如何自定义超时时间,并处理相应的超时事件呢? 对jQuery来说,超时可以直接设置timeout参数,并在error事件中捕获第二个参数,如果是“timeout”则表明捕获了超时事件,非常清楚。 例子: $.ajax({ ...
    ajax请求如何自定义超时时间,并处理相应的超时事件呢?
    
    对jQuery来说,超时可以直接设置timeout参数,并在error事件中捕获第二个参数,如果是“timeout”则表明捕获了超时事件,非常清楚。
    
    例子:
    
    $.ajax({
            type: "POST",
            contentType: "application/json",
            url: "../ws/MyService.asmx/test",
            data: '{"email":"'+email+'"}', 
            timeout: 30000, //超时时间:30秒        dataType: 'json',
            error: function(XMLHttpRequest, textStatus, errorThrown){
            //TODO: 处理status, http status code,超时 408        // 注意:如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能              //是"timeout", "error", "notmodified" 和 "parsererror"。        },         success: function(result) {
              // TODO: check result        } });                
    另外,error事件返回的第一个参数XMLHttpRequest有一些有用的信息:
    XMLHttpRequest.readyState: 状态码
      0 - (未初始化)还没有调用send()方法
      1 - (载入)已调用send()方法,正在发送请求
      2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
      3 - (交互)正在解析响应内容
      4 - (完成)响应内容解析完成,可以在客户端调用了
    XMLHttpRequest.status属性:一些错误代码
    HTTP  
    1xx-信息提示  
    这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。  
    100-继续。  
    101-切换协议。  
    2xx-成功  
    这类状态代码表明服务器成功地接受了客户端请求。  
    200-确定。客户端请求已成功。  
    201-已创建。  
    202-已接受。  
    203-非权威性信息。  
    204-无内容。  
    205-重置内容。  
    206-部分内容。  
    3xx-重定向  
    客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。  
    301-对象已永久移走,即永久重定向。  
    302-对象已临时移动。  
    304-未修改。  
    307-临时重定向。  
    4xx-客户端错误  
    发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。  
    401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:  
    401.1-登录失败。  
    401.2-服务器配置导致登录失败。  
    401.3-由于ACL对资源的限制而未获得授权。  
    401.4-筛选器授权失败。  
    401.5-ISAPI/CGI应用程序授权失败。  
    401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。  
    403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:  
    403.1-执行访问被禁止。  
    403.2-读访问被禁止。  
    403.3-写访问被禁止。  
    403.4-要求SSL。  
    403.5-要求SSL128。  
    403.6-IP地址被拒绝。  
    403.7-要求客户端证书。  
    403.8-站点访问被拒绝。  
    403.9-用户数过多。  
    403.10-配置无效。  
    403.11-密码更改。  
    403.12-拒绝访问映射表。  
    403.13-客户端证书被吊销。  
    403.14-拒绝目录列表。  
    403.15-超出客户端访问许可。  
    403.16-客户端证书不受信任或无效。  
    403.17-客户端证书已过期或尚未生效。  
    403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。  
    403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。  
    403.20-Passport登录失败。这个错误代码为IIS6.0所专用。  
    404-未找到。  
    404.0-(无)–没有找到文件或目录。  
    404.1-无法在所请求的端口上访问Web站点。  
    404.2-Web服务扩展锁定策略阻止本请求。  
    404.3-MIME映射策略阻止本请求。  
    405-用来访问本页面的HTTP谓词不被允许(方法不被允许)  
    406-客户端浏览器不接受所请求页面的MIME类型。  
    407-要求进行代理身份验证。  
    412-前提条件失败。  
    413–请求实体太大。  
    414-请求URI太长。  
    415–不支持的媒体类型。  
    416–所请求的范围无法满足。  
    417–执行失败。  
    423–锁定的错误。  
    5xx-服务器错误  
    服务器由于遇到错误而不能完成该请求。  
    500-内部服务器错误。  
    500.12-应用程序正忙于在Web服务器上重新启动。  
    500.13-Web服务器太忙。  
    500.15-不允许直接请求Global.asa。  
    500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。  
    500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。  
    500.100-内部ASP错误。  
    501-页眉值指定了未实现的配置。  
    502-Web服务器用作网关或代理服务器时收到了无效响应。  
    502.1-CGI应用程序超时。  
    502.2-CGI应用程序出错。application.  
    503-服务不可用。这个错误代码为IIS6.0所专用。  
    504-网关超时。  
    505-HTTP版本不受支持。  
    FTP  
    1xx-肯定的初步答复  
    这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。  
    110重新启动标记答复。  
    120服务已就绪,在nnn分钟后开始。  
    125数据连接已打开,正在开始传输。  
    150文件状态正常,准备打开数据连接。  
    2xx-肯定的完成答复  
    一项操作已经成功完成。客户端可以执行新命令。200命令确定。  
    202未执行命令,站点上的命令过多。  
    211系统状态,或系统帮助答复。  
    212目录状态。  
    213文件状态。  
    214帮助消息。  
    215NAME系统类型,其中,NAME是AssignedNumbers文档中所列的正式系统名称。  
    220服务就绪,可以执行新用户的请求。  
    221服务关闭控制连接。如果适当,请注销。  
    225数据连接打开,没有进行中的传输。  
    226关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。  
    227进入被动模式(h1,h2,h3,h4,p1,p2)。  
    230用户已登录,继续进行。  
    250请求的文件操作正确,已完成。  
    257已创建“PATHNAME”。  
    3xx-肯定的中间答复  
    该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。331用户名正确,需要密码。  
    332需要登录帐户。  
    350请求的文件操作正在等待进一步的信息。  
    4xx-瞬态否定的完成答复  
    该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。421服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。  
    425无法打开数据连接。  
    426Connectionclosed;transferaborted.  
    450未执行请求的文件操作。文件不可用(例如,文件繁忙)。  
    451请求的操作异常终止:正在处理本地错误。  
    452未执行请求的操作。系统存储空间不够。  
    5xx-永久性否定的完成答复  
    该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。500语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。  
    501在参数中有语法错误。  
    502未执行命令。  
    503错误的命令序列。  
    504未执行该参数的命令。  
    530未登录。  
    532存储文件需要帐户。  
    550未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。  
    551请求的操作异常终止:未知的页面类型。  
    552请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。  
    553未执行请求的操作。不允许的文件名。  
    常见的FTP状态代码及其原因  
    150-FTP使用两个端口:21用于发送命令,20用于发送数据。状态代码150表示服务器准备在端口20上打开新连接,发送一些数据。  
    226-命令在端口20上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。  
    230-客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。  
    331-客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。  
    426-命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。  
    530-该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS的配置可能拒绝匿名访问。  
    550-命令未被执行,因为指定的文件不可用。例如,要GET的文件并不存在,或试图将文件PUT到您没有写入权限的目录。
    
    ExtJS的默认超时时间是30s,超过就会ajax请求失败,http status code 408。
    
    设置ExtJS的超时时间方法需要用Ext.data.Connection 对象,并捕捉requestexception事件,例子:
    
    var conn=new Ext.data.Connection({
        url: "../ws/MyService.asmx/test",
        timeout : 60000, //自定义超时时间,这里是60秒 (默认30s)    autoAbort : false,
        disableCaching : true ,
        method : "GET"});var proxy = new Ext.data.HttpProxy(conn);
    
    proxy.getConnection().on("requestcomplete", function(sender, response, options){    
        //成功,response.status = 200, response.statusText = 'OK'});proxy.getConnection().on("requestexception", function(sender, response, options){
        //异常,捕捉 esponse.status  ( http status code 代码 )和 response.statusText });    var store = new Ext.data.Store({
        proxy: proxy, 
        reader: myReader, //需要另外定义一个reader    baseParams: {myargument:'myargumentValue'}, //改成你的参数名和值    remoteSort: false});    store.load();

    展开全文
  • ajax提交等待服务器响应友好提示信息的实现

    众所周知,在客户端向服务器发送AJAX请求时,会有一个等待服务器响应的过程,在网络环境好而且服务器负荷小的时候,业务逻辑不大太复杂的请求可能一下子就处理完并返回响应结果了,但当网络环境不理想或请求涉及到大量的运算时,服务器响应的时间或许就会比较漫长了,特别对于正在操作,正期待操作结果的用户来说,这段等待时候是无比的漫长,如果你没有过这样的操作体验,你回想一下约会时别人迟到的时候或有急事出门时在公交站苦苦等车的滋味,相信你就能感同身受了,而让用户忍受如此煎熬,对于强调用户体验的Web2.0时代,是大忌,是追求“为用户创造价值,让用户享受电子商务所带来的方便快捷”为宗旨的我所不能接受的。虽然,我不能改变客观环境因素带来的长响应时间,但我可以告诉用户系统正在做什么,让他们感受到,系统很在乎他们的感受,并愿意亲切地和他们交流的,而不是传统的软件那样,死板、霸道、冷冰冰的,好了,不多说大道理了,看看我的做法吧。

    首先声明,我现在正在介绍的并不是一个多么强大,多么了不起,技术含量多么高、能领先人类文明多少年的做法,其实这种做法,在咸丰年代开始就有了,不过,那是别人的事,下面介绍的,是我自己一个字母一个字母敲的,旨在交流与分享,也为了整理一下自己的思路,好了,正式开始:

     

    这是登录表单的html代码,没什么特别的,我的目的是为了大家在读下面的JS代码时能够更加容易理解而已。可以看到,表单中的提交按钮,并非一个传统意义上的<input type="submit"/>的标签,而是一个<a></a>,为什么用a?我觉得用a控制起样式比较简单,最重要是它的hover属性能够兼容各浏览器,这样的话我想做点炫一点的效果简单很多而不用又去写些HACK来兼容该死的IE6们。不过事实上,在上面的代码中没看到这个a是怎样与提交登录请求关联起来的。不用着急,马上送上:

     

    那么loginSubmit方法又做了什么事情呢?来看看代码先:

     

    这个方法其实是用来做提交验证登录信息请求前的一些处理的,比如空值的判断等等,可能你们看了方法的第一行关于loginConfig.isLoadingData这个判断会比较疑惑,先介绍一下这个变量吧,loginConfig是一个登录信息配置的对象字面量,而其中的isLoadingData是标记当前是否在加载数据的,为true时,表示已经发送了AJAX请求,但还没有得到服务器的回应,为false时,表示当前没有正在等待响应的请求。这个机制是为了防止用户不断点击登录按钮而导致客户端在还没得到服务器的请求的情况下不断地发送AJAX请求,造成无论是客户端还是服务器都产生无谓的负荷而设的。

    在继续向下的代码中,有个叫quickTips的方法,这个方法用于显示一些快速提示,如quickTips表示在id为userName的输入框附近提示用户输入用户名,这里不多介绍了,在一些常规的检测完毕后,执行loginWaiting方法,这个方法是本篇博客的关键,也就是开始向用户显示友好的登录信息的,在此之后,马上执行checkLogin方法,向服务器提交登录验证请求,本来,这两个动作应该是严格意义上的同时执行的,但JAVASCRIPT是单线程的,所以,唯有偏心一下了,呵呵,来看看loginWaiting方法做了什么吧:

     

    首先,将登录按钮的disabled属性设成true,这句代码的本意是将这个按钮设成不可用状态,但事实上,这样做,在很多浏览器上是无效的,所以只是个掩耳盗铃的做法,真正要达到这样的目的,还是靠下面的代码来实现。第二句代码,实现的是改变登录按钮的背景图片铺设的方向,之前是从左到右,现在是从右到左,我在做什么?看一下这幅图片到底是怎样的就清楚了*—*,on,god,CSDN blog原来是不支持上传图片的,所以没法展示这张图片给你们看了,其实只是一种很常见的做法,也就是将一张图片的原图放在左侧,右侧则放一张图片相应的灰度图(也就是当这个按钮不可用的状态时给按钮安排的背景图片),这样子把两张图片合成为一张有什么好处呢?一个是可以服务器的压力,因为一张图片意味着浏览器只需向服务器发一次请求,而两张就意味着两次。第二点,也就是最关键的地方在于,浏览器并不是一次性将所有页面用到的图片加载回来的,而是展示哪张时加载哪张,如果分开两张图片的话,当我们在切换按钮背景图片的时候,浏览器加载稍慢的话,会导致这个切换的过程中,按钮的背景是空白的,这是任何人都不想见到的结果,而我们之前是将其做成一张图片的话,只需要将加载好的图片向左或向右滑动一下就可以了,方便快捷、老少咸宜^_^,你说呢?

    从表单的html可以看得到,在登录按钮的右侧有一个取回密码的链接,在等待登录响应过程中,这个链接的存在是没什么必要的,甚至在看起来是有点多余的,所以我决定将其替换成友好的等待信息,$("#forgetPwd").html(waitingText);这句代码做的就是这件事,这样,感觉上,也差不多了,但老感觉还缺点什么,到底是缺什么呢?对了,缺一点生气,这时候,想起来在其它WEB站点或软件中,在后台运算时,通常会有动态的类似省略号的点在不停地跳动,有点像进度条的效果,感觉挺好的,所以我也决定做一个这样的效果,使提示更加友好,也跟得上潮流,呵呵,想了一下,感觉上这样的效果用定时执行会比较好,那就setInterval吧,下面的代码就不多作解释咯,记着在loginComplete后clearInterval就好了。

     

     

    展开全文
  • 如何提高AJAX客户端响应速度

    千次阅读 2016-10-10 00:47:48
    如何提高AJAX客户端响应速度原文转载自:http://dorado.group.iteye.com/group/topic/7229在原文基础上,本人(以下出现的笔者,均为原作者...理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上

    如何提高AJAX客户端响应速度

    原文转载自:http://dorado.group.iteye.com/group/topic/7229

    在原文基础上,本人(以下出现的笔者,均为原作者)做了一些内容修改和格式调整。

    AJAX的出现极大地改变了Web应用客户端的操作模式,它使得用户可以在全心工作时,不必频繁的忍受那令人厌恶的页面刷新。理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上的数据流量。然而,实际情况却并不总是这样。用户时常会抱怨用了AJAX的系统,响应速度反而降低了。

    笔者从事AJAX方面的研发多年,参与开发了目前国内较为成熟的AJAX平台-dorado。根据笔者的经验,导致这种结果的根本原因并不在AJAX。很多时候系统响应速度的降低都是由不够合理的界面设计和不够高效的编程习惯造成的。下面我们就来分析几个AJAX开发过程中需要时刻注意的环节。

    1.合理的使用客户端编程和远程过程调用。
      客户端的编程主要都是基于JavaScript的,而JavaScript是一种解释型的编程语言,它的运行效率相对于Java等都要稍逊一筹,同时JavaScript又是运行在浏览器这样一个严格受限的环境当中。因此开发人员对于哪些逻辑可以在客户端执行应该有一个清醒的认识。
    2.尽可能避免频繁的使用远程过程调用,例如避免在循环体中使用远程过程调用。
    3.如果可能的话尽可能使用AJAX方式的远程过程调用(异步方式的远程过程调用)。
    4.避免将重量级的数据操作放置在客户端。例如:大批量的数据复制操作、需要通过大量的数据遍历完成的计算等。
    5.改进对DOM对象的操作方式。
    6.提高字符串累加的速度
    7.避免DOM对象的内存泄漏
    8.复杂页面的分段装载和初始化
    9.利用GZIP压缩网络流量
    

    客户端的编程中,对DOM对象的操作往往是最容易占用CPU时间的,而且不同的编程方法之间的性能差异又往往是非常大的。

    以下是三段运行结果完全相同的代码,它们的作用是在网页中创建一个10x1000的表格。然而它们的运行速度却有着天壤之别。

    /* 测试代码1 - 耗时: 41秒*/
    var table = document.createElement("TABLE");
    document.body.appendChild(table);
    for(var i = 0; i < 1000; i++){
        var row = table.insertRow(-1);
        for(var j = 0; j < 10; j++){
        var cell = objRow.insertCell(-1);
        cell.innerText = "( " + i + " , " + j + " )";
        }
    }
    
    /* 测试代码2 - 耗时: 7.6秒 */
    var table = document.getElementById("TABLE");
    document.body.appendChild(table);
    var tbody = document.createElement("TBODY");
    table.appendChild(tbody);
    for(var i = 0; i < 1000; i++){
    var row = document.createElement("TR");
    tbody.appendChild(row);
    for(var j = 0; j < 10; j++){
        var cell = document.createElement("TD");
        row.appendChild(cell);
        cell.innerText = "( " + i + " , " + j + " )";
    }
    }
    
    /* 测试代码3 - 耗时: 1.26秒 */
    var tbody = document.createElement("TBODY");
    for(var i = 0; i < 1000; i++){   
      var row = document.createElement("TR");
     for(var j = 0; j < 10; j++){
      var cell = document.createElement("TD");
       cell.innerText = "( " + i + " , " + j + " )";
       row.appendChild(cell);
     }
     tbody.appendChild(row);
    }
    var table = document.getElementById("TABLE");
    table.appendChild(tbody); 
    document.body.appendChild(table);
    

    这里的“测试代码1”和“测试代码2”之间的差别在于在创建表格单元时使用了不同的API方法,而“测试代码2”和“测试代码3” 之间的差别在于处理顺序的略微不同。

    “测试代码1”和“测试代码2”之间如此大的性能差别我们无从分析,目前所知的是insertRow和insertCell是DHTML中表格特有的API,createElement和appendChild是W3C DOM的原生API。而前者应该是对后者的封装。不过,我们并不能因此而得出结论认为DOM的原生API总是优于对象特有的API。建议大家在需要频繁调用某一API时,对其性能表现做一些基本的测试。

    “测试代码2”和“测试代码3”之间的性能差异主要来自于他们的构建顺序不同。“测试代码2”的做法是首先创建最外层的《TABLE》对象,然后再在循环中依次创建《TR>和《TD》。而“测试代码3”的做法是首先在内存中由内到外的构建好整个表格,最后再将它添加到网页中。这样做的目的是尽可能的减少浏览器重新计算页面布局的次数。每当我们将一个对象添加到网页中时,浏览器都会尝试对页面中的控件的布局进行重新计算。所以,如果我们能够首先在内存中将整个要构造的对象全部创建好,然后再一次性的添加到网页中。那么,浏览器将只会做一次布局的重计算。总结为一句话那就是越晚执行appendChild越好。有时为了提高运行效率,我们甚至可以考虑先使用removeChild将已存在的控件从页面中移除,然后构造完成后再重新将其放置回页面当中。

    对于字符串累加的问题

    在使用AJAX提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交。尽管提交这样大的信息的做法看起来并不优雅,但有时我们可能不得不面对这样的需求。那么JavaScript中对字符串的累加速度如何呢?我们先来做下面的这个实验。累加一个长度为30000的字符串。

    /* 测试代码1 - 耗时: 14.325秒 */
    var str = "";
    for (var i = 0; i < 50000; i++) {
      str += "xxxxxx";
    }
    这段代码耗时14.325秒,结果并不理想。现在我们将代码改为如下的形式:
    /* 测试代码2 - 耗时: 0.359秒 */
    var str = "";
    for (var i = 0; i < 100; i++) {
      var sub = "";
      for (var j = 0; j < 500; j++) {
            sub += "xxxxxx";
     }
     str += sub;
    }
    这段代码耗时0.359秒!同样的结果,我们做的只是首先拼装一些较小的字符串然后再组装成更大的字符串。这种做法可以有效的在字符串拼装的后期减小内存复制的数据量。知道了这一原理之后我们还可以把上面的代码进一步拆散以后进行测试。下面的代码仅耗时0.140秒。
    
    /* 测试代码3 - 耗时: 0.140秒 */
    var str = "";    
    for (var i1 = 0; i1 < 5; i1++) {
       var str1 = "";
      for (var i2 = 0; i2 < 10; i2++) {
            var str2 = "";
            for (var i3 = 0; i3 < 10; i3++) {
              var str3 = "";
               for (var i4 = 0; i4 < 10; i4++) {
                var str4 = "";
                for (var i5 = 0; i5 < 10; i5++) {
                    str4 += "xxxxxx";
                }
                str3 += str4;
            }
            str2 += str3;
        }
        str1 += str2;    
    }
    str += str1;    
    }
    

    不过,上面这种做法也许并不是最好的!如果我们需要提交的信息是XML格式的(其实绝大多数情况下,我们都可以设法将要提交的信息组装成XML格式),我们还能找到更高效更优雅的方法—利用DOM对象为我们组装字符串。下面这段代买组装一个长度为950015的字符串仅须耗时0.890秒。

    /* 利用DOM对象组装信息 - 耗时: 0.890秒 */
    var xmlDoc;    
    if (browserType == BROWSER_IE) {
    xmlDoc = new ActiveXObject("Msxml.DOMDocument");
    }
    else {
    xmlDoc = document.createElement("DOM");
    }
    var root = xmlDoc.createElement("root");
    for (var i = 0; i < 50000; i++) {
       var node = xmlDoc.createElement("data");
      if (browserType == BROWSER_IE) {
           node.text = "xxxxxx";
      }
      else {
          node.innerText = "xxxxxx";
     }
     root.appendChild(node);
    }
    xmlDoc.appendChild(root);
    
    var str;
    if (browserType == BROWSER_IE) {
       str = xmlDoc.xml;
        }
    else {
      str = xmlDoc.innerHTML;
    }
    

    对于DOM对象的内存泄漏的问题

    关于IE中DOM对象的内存泄露是一个常常被开发人员忽略的问题,然而它带来的后果却是非常严重的!它会导致IE的内存占用量持续上升,并且浏览器的整体运行速度明显下降。对于一些泄露比较严重的网页,甚至只要刷新几次,运行速度就会降低一倍。

    比较常见的内存泄漏的模型有“循环引用模型”、“闭包函数模型”和“DOM插入顺序模型”,对于前两种泄漏模型,我们都可以通过在网页析构时解除引用的方式来避免,而对于“DOM插入顺序模型”则需要通过改变一些惯有的编程习惯的方式来避免。

    复杂页面的分段装载和初始化

    对系统当中某些确实比较复杂而又不便使用IFrame的界面,我们可以对其实施分段装载。例如对于多页标签的界面,我们可以首先下载和初始化多页标签的默认页,然后利用AJAH(asynchronous JavaScript and HTML)技术来异步的装载其他标签页中的内容。这样就能保证界面可以在第一时间首先展现给用户。把整个复杂界面的装载过程分散到用户的操作过程当中。

    利用GZIP压缩网络流量

    除了上面提到的这些代码级的改良之外,我们还可以利用GZIP来有效的降低网络流量。目前常见的主流浏览器已经全部支持GZIP算法,我们往往只需要编写少量的代码就可以支持GZIP了。例如在J2EE中我们可以在Filter中通过下面的代码来判断客户端浏览器是否支持GZIP算法,然后根据需要利用java.util.zip.GZIPOutputStream来实现GZIP的输出。

    /* 判断浏览器对GZIP支持方式的代码 */ 
    private static String getGZIPEncoding(HttpServletRequest request) {
    String acceptEncoding = request.getHeader("Accept-Encoding");
    if (acceptEncoding == null) return null;
    acceptEncoding = acceptEncoding.toLowerCase();
    if (acceptEncoding.indexOf("x-gzip") >= 0) return "x-gzip";
    if (acceptEncoding.indexOf("gzip") >= 0) return "gzip";
    return null;
    }
    

    一般而言,GZIP对于HTML、JSP的压缩比可以达到80%左右,而它造成的服务端和客户端的性能损耗几乎是可以忽略的。结合其他因素,支持GZIP的网站有可能为我们节约50%的网络流量。因此GZIP的使用可以为那些网络环境不是特别好的应用带来显著的性能提升。

    使用Http的监视工具Fiddler可以方便的检测出网页在使用GZIP前后的通讯数据量。Fiddler的下载地址是http://www.fiddlertool.com/fiddler/

    关于Web应用的性能优化其实是一个非常大的话题。本文由于篇幅有限,只能涉及其中的几个细节,并且也无法将这些细节的优化方式全面的展现给大家。期望本文能够引起大家对Web应用尤其是客户端性能优化的充分重视,而且在客户端的方法改进往往能够得到令人惊奇的性能提升。

    展开全文
  • 提高AJAX客户端响应速度...理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上的数据流量。而然,实际情况却并不总是这样。用户时常会抱怨用了AJAX的系统响应速度反而降低了。 笔者从事AJAX方面
  • ajax请求响应中window.open拦截解决

    千次阅读 2016-11-23 11:35:30
    问题原因:ajax回调函数中执行window.open或者模拟click事件,由于跳转操作不是用户主动触发,会被认为不安全,浏览器会进行拦截。 1: 在fun方法中调用window.open是不会被拦截的。 2:如果不是打开新窗口,而是...
  • 同步:就是在一段时间内只做一件事,当浏览器访问服务器时,客户端只能等待服务器的响应,不能做其他事情。比如:输入网址访问页面、a标记的默认跳转、submit按钮的表单提交 异步:就是在一段时间内,可以同时做很多...
  • ajax设置请求头部超时时间ajax.setRequestHeader("connectionTimeout","5000");这样就设置了5秒的超时限制 
  • 传统网站中存在的问题 网速慢的情况下,页面加载时间长,用户只能等待 表单提交后,如果一项内容不合格,需要重新填写所有表单内容 ...Ajax 相当于浏览器发送请求与接收响应的代理人,以实现在不影响用...
  • jQuery 实现 Ajax 提交请求和服务器响应 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put...
  • jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。具体可参考jQuery官方文档:http://api.jquery.com/Ajax_Events/[html] view plain copy$....
  • 最近在统计网站请求响应时间时,发现有很多请求时间超过0.5秒,login/info最为明显。 经过分析,login/info本身操作并不复杂,读取Session中的数据,查询一次数据库,然后返回。 进一步跟踪发现,PHP在访问Session...
  • 无需刷新整个Web页面显示服务器响应的当前时间 当前时间: //创建AJAX异步对象 function createAJAX(){ var ajax = null; try{ //如果IE5=IE12的话 ajax = new ActiveXObject(...
  • ajax请求时间过长页面等待提示框

    千次阅读 2014-08-08 17:48:06
    数据正在处理中,请耐心等待 .ui-icon-yan { width: 16px; height: 16px; background-image: url(../images/ui-icons_469bdd_256x240.png); } .ui-icon-alert-yan { background-position: 0 -144...
  • -解决ajax响应无法解析数据的问题 项目需求:设备配置管理系统平台的设计中,需要将所有的设备的IP地址、子网掩码、网关等参数在前端页面实时显示 ...减少了用户等待时间,有效地提高了用户...
  • Ajax

    2017-06-24 13:22:35
    同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随 意做其他事情,不会被卡死2.Ajax的运行...
  • 前台ajax提交请求之后,后台用Servlet响应请求。本来最简单的,一次请求,后台一次性返回所有内容,这个过程就结束了。 现在后台的处理比较多,耗时较长,得到的数据有快有慢,先后写入到PrintWriter中的。 为了...
  • AJAX

    千次阅读 多人点赞 2019-08-25 12:55:49
    AJAX 关于ajax和异步 什么是ajax? 交互式网站开发技术 实现动态更新(局部)的内容 优点: 提升浏览器的加载速度 实现了局部刷新 表单验证(增强用户体验) Ajax 即“Asynchronous Javascript And XML”(异步 ...
  • AJAX AJAX AJAX

    2019-06-21 04:17:19
    1.组成: async javascript and xml 异步的JS和...AJAX的就是为了实现局部刷新 2.如何操作AJAX XMLHttpRequest对象 1.实例化对象 2.建立联系 method: get(获取数据) post(新建 增加数据) put(更新 修改数...
  • 有时我们会注意到,当一个网页发送两个或者更多Ajax请求时,PHP的反应时间会很长并会同时返回响应内容。这个问题很可能是你处理PHP会话的方式造成的,跟着本文去理解这个问题,并做一些处理来避免这个问题。内容什么...
  • ajax

    2007-03-31 15:40:00
    使用JavaScript和Ajax发出异步请求多数 Web 应用程序都使用请求/响应...有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了。本文中,Brett McLaughlin 介绍了如何创建能够适应不

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,680
精华内容 13,072
关键字:

ajax等待响应时间