Javascript JQuery绑定在Ajax成功上的应用

Javascript 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()将函数的上下文设置为该应该是的任

为什么我们在AJAX
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不是函数