Jquery ajax 中context的作用

概念

  • ajax中context对象用于设置Ajax相关回调函数的上下文,这些回调包括:
    • beforeSend 在发送请求之前调用
    • error 在请求出错时调用
    • dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
    • success 当请求之后调用。
    • complete 当请求完成之后调用这个函数,无论成功或失败。

在ajax调用中,通过设置context对象,让回调函数内this指向这个对象
如果不设定这个参数,那么this就指向调用本次AJAX请求时传递的options参数,options参数就是$ajax()括号中的内容,通常我们只会设置其中的某部分参数,其实这个参数是比较复杂的,我们可以在其中定义一个自定义参数来观察这种现象
可以指定一个任意的变量,也可以是一个dom元素作为context参数,这样就设置了success回调函数的上下文为这个指定的变量。就像这样:

因为$.ajax()函数依赖服务器提供的信息来处理返回的数据,所以下面的代码为了在没有运行服务器的情况下可以观察到this的实际效果,所以使用了beforeSend回调函数。

指定一个变量作为context参数

  • 定义了一个infor的字符串变量,来用作context的指定内容
  • 在回调函数中通过this来获取指定的内容
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.staticfile.org/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<script>
$(function(){
var infor="infor test";
$.ajax({
	//这里指定context的内容为上面的test变量
	context:infor,
	beforeSend: function(){
		//这的this等同于test
		alert(this);
	}
});
	
});
</script>
</body>
</html>

指定一个dom元素作为context参数

  • 定义一个.backRed的样式,用于后面的效果叠加
  • 定义一个id为#testDiv的div元素,用于指定为context的内容
  • 通过$(this)来对这个元素进行样式叠加

<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.staticfile.org/jquery/1.8.3/jquery.min.js"></script>
<style>
	.backRed{
		background-color:red;
	}
</style>
</head>
<body>
<div id="testDiv">test </div>
<script>
$(function(){
var infor="infor test";
$.ajax({
	//这里指定context的内容为id=testDiv的div元素
	context:$("#testDiv"),
	beforeSend: function(){
		//这的this等同于test
		$(this).addClass("backRed");
	}
});
	
});
</script>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值