jQuery源码中的Ajax--getScript()/getJson()方法

一、$.getScript()方法

  • 有时候,在页面初次加载时就取得所需的全部Javascript文件是完全没必要的,可以按需所取。
  • 该函数用于动态加载JS文件,并在全局作用域下执行文件中的JS代码。
  • 该函数可以加载跨域的JS文件。请注意,该函数是通过异步方式加载数据的。
  • 该函数属于全局jQuery对象。

  语法:

$(function(){
        $("send").on("click",function(){
            $.getScript("script.js",function(){
                //回调函数
               //data:返回的数据
     //textStatus:描述状态的字符串
            });
        });
});            

  $.getScript()方法的源码:

getScript: function( url, callback ) {
        return jQuery.get( url, undefined, callback, "script" );
    }

  在该方法中,调用了$.get()方法,幷传入了响应的参数。

  $.get()方法的语法结构如下:

jQuery.get( url [, data ] [, success ] [, type ] )

  $.get()方法等价于:

$.ajax({
 url: url,
 type: "GET",
 success: success,
 dataType: "script"
});

二、$.getJson()方法

  • 该方法用于加载Json文件
  • 如果请求的URL中包括"callback=?"等类似的部分,jQuery会自动将其视作JSONP,并执行对应的回调函数来获取JSON数据。
  • 该函数是通过异步方式加载数据的。
  • 该函数属于全局jQuery对象。

  语法:

$(function(){
        $("send").on("click",function(){
            $.getJson("test.json",function(data){
                //回调函数         //data:返回的数据         //textStatus:描述状态的字符串
            });
        });
});

  $.getJson()方法的源码:

getJSON: function( url, data, callback ) {
        return jQuery.get( url, data, callback, "json" );
    }

  在该方法中,也调用了$.get()方法,幷传入了相应的参数。

  $.getJson()等价于:

$.ajax({
 url: url,
 type: "GET",
 data: data,
 success: success,
 dataType: "json"
});

  *$.getScript()和$.getJson()方法都是通过对$.get()方法封装实现的。属于第三层方法。

  *总之:

第三层 $.getJson()、$.getScript()
第二层 $.get()、$.post()
第一层 $.ajax()
时间: 2024-08-05 15:21:06

jQuery源码中的Ajax--getScript()/getJson()方法的相关文章

jQuery源码中的Ajax--serialize()/serializeArray()/param()方法

由于jQueryObject.serialize()方法的核心是$.param()方法,所以先学习$.param()方法. 一.$.param()方法 $.param()方法是用来对一个数组或对象按照key/value进行序列化,以便用于URL查询字符串或AJAX请求.其返回的字符串已经过URL编码处理(采用的字符集为UTF-8). 语法: jQuery.param( obj [, traditional ] ) 参数如下: 参数 描述 obj 需要被序列化的JS对象. traditional

关于jQuery源码中(function(window,undefined){//dosomething()})(window)写法解释

一.首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名). 1 (function() {// ...})(); 二.自执行函数和其他函数类似,都可以传入参数:jQuery源码中将window作为一个参数传入, window是DOM对象模型的最顶层对象,把全局变量传进来,就避免了到外层去寻找,提高效率: 1 (function(window) {// ...})(window); 当

jQuery源码中的Ajax--get()/post()方法

load()方法通常用来在web服务器上获取静态的数据文件,如果需要传递一些参数给服务器中的页面,那就可以使用$.get()方法或$.post()方法. *$.get()方法和$.post()方法是jQuery中的全局函数 一.$.get()方法 $.get()方法是使用GET方式来进行异步请求.结构为: $.get(url [.data] [.callback] [.type]) 参数解释如下: 参数名称 类型 说明 url String 请求的HTML页的url地址 data(可选) Obj

jQuery源码中的Ajax--load方法

load()方法是jQuery中最为简单和常用的方法,能载入远程HTML代码幷插入到DOM中,其结构为: load(url [.data] [.callback]) 各参数解释如下: 参数名称 类型 说明 url String 请求HTML页面的URL地址 data(可选) Object 发送至服务器的key/value数据 callback(可选) Function 请求完成时的回调函数,无论请求成功或失败 load的源码如下:(源码目录:jquery/src/ajax/load.js) de

关于jquery源码中undefined作为参数的理解

大家先看一下,下面代码 (function (window,undefined) {window.alert('zhangling');var person = {};person.addName = function () { };person.addAge = function () { };})(window) 压缩后: (function(a,b){a.alert('zhangling');var c={};c.addName=function(){};c.addAge=function

在看 jquery 源码中发现的一些优化方向

1. 避免使用 $.fn.each 或 $.each 因为它比原生的 for/while 真的会慢一些,循环次数越多差距越大. 另外,对象的 for-in 比 for 是要快一丢丢的,但数组的 for-in 要比 for 慢 2. 选择器 始终要相信,原生的普遍要快一些,因此 jquery 也是如此, id 选择器 $('#id') / 元素标签选择器 $('input') / 类选择器 $('.class') 都是原生的 而伪类选择器 $(':hidden') / 属性选择器 $('[data

jquery源码中的(function(window, undefined){})(window)【转】

(function( window, undefined ) {})(window);这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ) {})(jQuery); 同理 因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率.undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined. 还

Jquery源码中的Javascript基础知识(四)— jQuery.fn.init方法

$() 即调用了jQuery.fn.init方法 jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } 下面是init方法代码: 1 init: function( selector, context, rootjQuery ) { 2 var match, elem; 3 if ( !selector ) { 4 return this; 5

jQuery源码05 (3653 , 3797) queue() : 队列方法 : 执行顺序的管理

//对外接口 jQuery.extend({ queue: function( elem, type, data ) {//入队.元素.队列名字.存进去的函数 //jQuery.queue( this, type, function( next, hooks ) {}) var queue; if ( elem ) { type = ( type || "fx" ) + "queue";//不写队列名字就是fx // $.queue( document , 'q1'