Javascript JQuery绑定在Ajax成功上的应用
为什么我们在AJAXJavascript JQuery绑定在Ajax成功上的应用,javascript,jquery,ajax,bind,Javascript,Jquery,Ajax,Bind,为什么我们在AJAXsuccess调用时调用bind 请看下面的代码: $.ajax({ url:myurl, 数据类型:“json”, 成功:功能(数据){ this.setState({data:data}); }.绑定(此) }); 如果我们不调用bind,那么在这里使用bind会有什么区别吗?您需要调用bind(),以强制回调上下文(this)是正确的。否则,默认情况下在全局上下文中调用它(显然,jQuery使用jqXHR对象的上下文调用它)bind()将函数的上下文设置为该应该是的任
success
调用时调用bind
请看下面的代码:
$.ajax({
url:myurl,
数据类型:“json”,
成功:功能(数据){
this.setState({data:data});
}.绑定(此)
});
如果我们不调用
bind
,那么在这里使用bind
会有什么区别吗?您需要调用bind()
,以强制回调上下文(this
)是正确的。否则,默认情况下在全局上下文中调用它(显然,jQuery使用jqXHR对象的上下文调用它)bind()
将函数的上下文设置为该应该是的任何内容。@shubham,在回调函数中使用当前的JavaScript语法,如您在中所述:
success: function(data){
this.setState({data: data});
}
bind()
函数的第一个参数将在调用函数时充当此参数,您应该遍历apply()
和call()
函数,因为这将对您有所帮助 我想您的代码来自React。因为最近我在处理React时遇到了类似的问题
回到你的问题上来。我认为bind
起到了转换的作用。代码如下:
componentDidMount: function() {
var _this = this;
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
_this.setState({data: data});
}
});
},
等于:
componentDidMount: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
this.setState({data: data});
}.bind(this)
});
},
至于,我想你可以理解什么是bind函数,以及为什么要使用
bind
来实现它。对不起,我没有得到这个。请你详细说明一下,如果你不调用bind,回调中的这个将是错误的。我同意scimonester.bind()将函数的上下文设置为它应该是什么,否则函数将给出如下错误:uncaughttypeerror:this.setState不是函数