ajax的处理流程,jQuery学习笔记之 Ajax操作篇(三) - 过程处理

观察函数

ajaxStart 和 ajaxStop 函数可以用来作为观察函数,我们可以使用观察函数的回调函数来做相应的处理。

当 Ajax 请求开始且尚未进行其他传输时,会触发 ajaxStart 的回调函数。

当最后一次活动请求终止时,则会执行通过 ajaxStop 注册的回调函数。

由于观察函数具备全局性,所以需要使用 $(document) 来调用。我们通过使用 Ajax 方法取得一个图片的例子来测试两个函数:

当前页面为:

load

668fbd34aff35a7498840e8629dde33d.png

同目录下的 test.html 内容为:

avatar.jpg

点击按钮后希望载入图像:

$('button').click(function() {

$('div').load('test.html');

});

ae83b0e07462bd0f49f4c4ba13fa3932.png

此时我们可以使用 ajaxStart 和 ajaxStop 函数来增加提示:

$(document).ajaxStart(function() {//

alert('load a picture');

}).ajaxStop(function() {

alert('show a picture');

});

$('button').click(function() {

$('div').load('test.html');

});

此时点击按钮后,再图像载入前先提示 load a picture,载入后提示 show a picture。

错误处理

最常用的方式是全局的 ajaxError 方法,以上例为例,如果我们像一个不存在的页面发送数据请求:

$(document).ajaxError(function() {//

alert('load failed!');

});

$('button').click(function() {

$('div').load('noexsited.html');

});

此时点击按钮后:

b955ed842db666b720fc86a0e88f20b6.png

对于非 load 方法,还可以使用 fail 方法来连缀处理:

$('button').click(function() {

$.get('noexsited.html', function(data) {

}).fail(function(jqXHR) {

alert('status is ' + jqXHR.status);

});

});

0eac61204c81cada5c15865bfa2f5038.png

JSONP

JSONP 即 JSON with padding,填充式 JSON,利用的是 标签可以跨域获取 Javascript 文件的思路,故可以跨域获取 JSON 数据。

JSONP 的格式是把标准 JSON 文件包装在一对圆括号中,圆括号又前置一个任意字符串。这个字符串,即所谓的 P,由请求数据的客户端来决定。

同样是上例的按钮,首先我们将外域页面 otherdomain.com/index.php 内容设置为:

$data = '{ "name": "stephenlee", "sex": "male" }';

echo $_GET['callback'] .'('. $data .')';

我们使用特殊的占位符 ? 来实现跨域获取 JSON 数据:

$('button').click(function() {

$.getJSON('otherdomain.com/index.php?callback=?', function(data) {

console.log(data);

});

});

af4795de90bd61c1223e7fb36b5c3dbf.png

数据获取成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值