WEB开发网
开发学院网页设计JavaScript Jquery源码分析---Ajax分析 阅读

Jquery源码分析---Ajax分析

 2010-09-14 13:39:06 来源:WEB开发网   
核心提示: scriptTag②~⑥是处理跨域请求的部分,对于dataType为jsonp的类型,Jquery源码分析---Ajax分析(6),给其请求的字符串(可能是s.data)加上callback=callbackfn的key/value串,然后在window下注册一个callbackfn的函数

scriptTag

②~⑥是处理跨域请求的部分。对于dataType为jsonp的类型,给其请求的字符串(可能是s.data)加上callback=callbackfn的key/value串,然后在window下注册一个callbackfn的函数。这个函数的形式如callbackfn(data){ data = tmp;success();complete();}。它代理了通过ajax(s)的传入s参数中success();complete()的功能。它就是调用这个函数,实际上是调用success();complete()的函数。

那么怎么调用呢?ajax不支持跨域。在⑤处,我们可以看到这里是采用scriptTag的方式来完成。先在页面的<head>中添加一个<script src=url />的标签。因为在<head>中。浏览器会自动载入并运行请求返回的script。如果是jsonp的形式,服务器端还要动态生成的content-type为script的代码:callbackfn(data);只有这样才会调用在window中注册的函数callbackfn。同时传入所需要的参数。

如dataType == "script"形式的跨域,那只能是通过script.onload 或 script.onreadystatechange事件来触发回调。这里我们可以通过服务器返回的script代码:var data=xxx。来传递参数给s.success();s.complete()。Jquery这里采用是全局变量data来进行操作的。

Ajax Event

④是采用了jQuery.event.trigger("ajaxStart");来触发全局的ajaxStart事件。这也是说只要注册了这个事件的元素,在任何的ajax的请求时ajaxStart都会执行元素注册的事件处理函数。这和Ext的事件有点相似。但是它不是全局的。

jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i, o) {
  jQuery.fn[o] = function(f) {// f:function
    return this.bind(o, f);
};

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Jquery 源码 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接