Jquery源码分析---Ajax分析
2010-09-14 13:39:06 来源:WEB开发网上面的代码是为jquery对象注册了ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend这几种ajax的事件方法,在jquery.ajax中不同的时刻都会触发这些事件。当然我们也可以采用s.global=false来设定不触发这些事件。
因为这是全局的,个人认为其设计的目的就是为了在这些时候能以某种形式来告诉用户ajax的进行的状态。如在ajaxstart的时候,我们可能通过一个topest的div层(加上遮罩的效果)的元素注册一个ajaxstart事件的处理方法。该方法就是显示这个层和显示“你的数据正在提交。。。”这个的提示。这是这6种事件的最佳用法了。
如果进行私有处理,那么要在事件的处理函数中进行判断。因为每个事件处理函数的第二参数是jquery.ajax(s)的s参数。我们可以在这个参数中做私有的标识,如eventType:xxx。每类不同的请求有不同的eventType值。在事件处理函数再根据这个eventType==xxx进行判断,从而进行私有的处理。如果有大量的这样的私有处理也是会影响ajax的效率的。
setRequestHeader
⑥处是创建一个xhr对象并通过open来创建一个连接(socket)。
⑦处是设定请求的头部(setRequestHeader)。如果data的存在的话,那就得设定Content-Type,便于服务器按一定的规则来解码。可以看出post的方式通过data传递数据要安全一点。
那么服务器如果区别这个请求是ajax呢?因为同步和异步ajax的请求的头文件是一样的。我们如果通过X-Requested-With"="XMLHttpRequest”来标识这个请求是ajax的请求。如果服务器硬是要区分的话,就可以通过获取该头部来判断。
在头部的定义中,还可能通过Accept来指定接受的数据的类型,如application/xml, text/xml", "text/html", "text/javascript, 等等。
更多精彩
赞助商链接