AJax技术

JQuery学习笔记整理:AJAX

字号+ 作者:H5之家 来源:H5之家 2018-03-10 10:00 我要评论( )

JQuery学习笔记整理:AJAX

jQuery中封装了很多与AJAX请求相关的方法,这些方法能够让你更轻松地处理AJAX请求,在这里,并不打算讲解AJAX请求的原理,如需了解:可看这里:《JavaScript学习笔记整理(14):AJAX》。

目录


1、$.get()、$.post()

$.get()   使用HTTP GET方法发起Ajax请求

$.post()  使用HTTP POST方法发起Ajax请求

(1)$.get()

$.get()使用HTTP GET方法发起Ajax请求;$.post() 使用HTTP POST方法发起Ajax请求。

$.get( url [, data ] [, success ] [, type ] );

$.post( url [, data ] [, success ] [, type ] )

参数说明:

url : 指定请求的目标URL

data : 发送请求传递的数据

success : 请求成功时执行的回调函数,它会传递三个参数:第一个是response(请求返回的数据),第二个是请求状态文本(例如:success、notmodified、error、timeout、abort等),第三个是当前jqXHR对象(经过jQuery封装的XMLHttpRequest对象)。

type : 指定请求返回的数据类型,可以是xml、html、script、json、jsonp、text。如果省略此参数,jQuery会自动猜测返回数据类型,可能是:xml、json、script或html。

$.get( 'example.php?id=1' );

$.get( 'example.php', 'id=1' );  //和第一条等价

$.get( 'example.php', {id:1} ); //和第一条等价


$.get( 'example.php', {id:1}, function(response,textStatus,jqXHR){

  //response是请求返回数据

  //textStatus可能是success、notmodified

},'json');  //指定返回数据的类型是JSON格式,jQuery将会尝试将返回数据转换为JSON对象。

$.get()和$.post()两个方法的用法完全一样,底层也都是使用$.ajax()来实现的,但是两者请求方式不一样,前者是GET请求,后者是POST请求。


2、load()、$.getScript()、$.getJSON()


(1)load()

load()方法仅用来从服务器获取HTML数据,并替换当前匹配元素内容。

jQuery.load( url [, data ] [, complete] );

参数说明:

url : 指定请求的目标URL

data : 发送请求传递的数据

complete : 请求完成(不管成功或失败)后执行的回调函数,它会传递三个参数:第一个是response(请求返回的数据),第二个是请求状态文本(例如:success),第三个是当前jqXHR对象(经过jQuery封装的XMLHttpRequest对象)。


load()会返回jQuery对象本身。

<div></div>


$('.box').load('example.php');  //加载example.php的html内容来替换当前文档的每一个div.box元素

$('.box').load('example.php?id=1');

$('.box').load('example.php',{id: 1});

$('.box').load('example.php',{id: 1},function(response,textStatus,jqXHR){

  //response 是返回的原始文本数据

  //textStatus 是请求状态文本

  //jqXHR是经过jQuery封装的XMLHttpRequest对象。

});

load()方法还有一个额外的用法:

$('.box').load('example.php?id=1 #box');

//会从返回来的html内容中获取id为box的元素来替换所有div.box元素。


注意:jQuery会自动过滤load()返回来的html内容中的DOCTYPE以及html、head、body的标签后再进行替换,而且如果jQuery对象中没有匹配元素,load()不会执行,既不会发送ajax请求,也不会执行回调函数。


(2)$.getScript()

$.getScript()方法用来载入JavaScript文件(以HTTP GET形式),并在全局作用域下执行其中的语句,而且它可以加载跨域的JS文件。

jQuery.getScript( url [, complete] );

参数说明:

url : 指定请求的目标URL

complete : 请求成功后执行的回调函数,它会传递三个参数:第一个是response(请求返回的数据),第二个是请求状态文本(例如:success),第三个是当前jqXHR对象(经过jQuery封装的XMLHttpRequest对象)。


$.getScript('example.js');

注意:如果多次加载相同URL的js文件,每次都会重新加载该js文件,因为getScript()函数会在js文件的URL后添加一个时间戳参数后缀,从而避免浏览器获取缓存的js文件。


(3)$.getJSON()

$.getJSON()方法用来从服务器获取JSON数据(以HTTP GET形式)。

jQuery.getJSON( url [, data ] [, complete] );

参数说明:

url : 指定请求的目标URL

data : 发送请求传递的数据

complete : 请求成功后执行的回调函数,它会传递三个参数:第一个是response(请求返回的数据),第二个是请求状态文本(例如:success),第三个是当前jqXHR对象(经过jQuery封装的XMLHttpRequest对象)。


(4)使用JSONP

JSONP支持跨域加载数据。

//首先创建一个处理数据的函数

function processJSONP(data){}


//然后向服务器发起请求

$.getJSON( 'example.php?callback=processJSONP&id=1', function(response,textStatus,jqXHR){

  //返回的数据会是这样的格式:processJSONP({"name": "tg"});

});

注意上面的请求地址格式(加上了 callback=processJSONP )。


注意:因为jQuery中的所有关于AJAX方法在默认情况下都是异步的(如果将async设置为false就是同步),所以如果你要对AJAX方法返回来的数据进行操作时,就需要在complete回调函数里操作。


相关文章:JQuery的Ajax请求跨域问题


3、$.ajax()

上面都是介绍jQuery提供的一些便捷的AJAX方法(底层都是通过$.ajax()实现),接下来了解一下jQuery Ajax底层的API。


语法

$.ajax( url [, settings ])

参数说明:

 url :指定请求的目标URL

 settings : 一个以键值对组成的请求设置,用来指定发送请求的可选参数。


settings中的可选参数说明:

accepts  发送的内容类型请求头,用于告诉服务器——浏览器可以接收服务器返回何种类型的响应,默认:取决于数据类型dataType


async  指定是否是异步请求,默认是true。当设置为true(同步请求)时,请求时将锁定浏览器,直到获取远程数据后才会执行其他操作。


beforeSend  指定在Ajax请求发起之前执行的回调函数,该函数还传入2个参数,第一个是jqXHR对象,第二个是当前settings对象。如果该函数返回false,将会取消本次请求。


cache 指定是否缓存URL请求,默认为true(dataType为'script'或'jsonp'时,则默认为false)。如果设为false将强制浏览器不缓存当前URL请求。该参数只对HEAD、GET请求有效。


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JavaCrazyer的ItEye(codewu.com)技术博客

    JavaCrazyer的ItEye(codewu.com)技术博客

    2018-01-19 16:00

  • 退役的龙弟弟的博客

    退役的龙弟弟的博客

    2017-12-02 11:11

  • 在php中应用Ajax技术实现博客文章添加类别

    在php中应用Ajax技术实现博客文章添加类别

    2017-12-01 13:14

  • [原创]利用ajax实现长轮询技术

    [原创]利用ajax实现长轮询技术

    2017-11-20 16:02

网友点评