在保留“的范围”的同时检索响应;这";使用jqueryajax
我使用了一个闭包来设置这一点,但现在我当然失去了“响应”。有人知道在这个实例中检索响应数据的方法吗在保留“的范围”的同时检索响应;这";使用jqueryajax,jquery,ajax,closures,jscript,Jquery,Ajax,Closures,Jscript,我使用了一个闭包来设置这一点,但现在我当然失去了“响应”。有人知道在这个实例中检索响应数据的方法吗 var form = { name: 'great form', load:function() { $.ajax({ url: "get/data", type: "POST", success: function(_this){ console.log(_thi
var form = {
name: 'great form',
load:function() {
$.ajax({
url: "get/data",
type: "POST",
success: function(_this){
console.log(_this.name); // outputs : "great form"
console.log(response.data); // response is undefined
}(this)
});
};
您不希望将此作为success函数的参数(您的做法是立即调用函数,而不是等待jQuery在成功时调用函数),您可以将其作为变量与
ajax
调用一起创建:
var form = {
name: 'great form',
load:function() {
var _this = this; // <=== Here
$.ajax({
url: "get/data",
type: "POST",
success: function(response){
console.log(_this.name); // outputs : "great form"
console.log(response.data); // response is undefined
}
});
};
var form={
名称:“伟大的形式”,
加载:函数(){
var _this=this;//您不想将参数更改为成功处理程序。成功处理程序的第一个参数是您的ajax响应数据,因此您需要将其视为成功处理程序
要访问成功处理程序中的this
指针,有几种方法。我认为最优雅的一种方法是,jQuery允许您在上下文中传递希望this
在成功回调中设置为$.ajax()
函数的参数之一,如下所示:
var form = {
name: 'great form',
load:function() {
$.ajax({
context: this, // sets 'this' pointer for success callback
url: "get/data",
type: "POST",
success: function(response){
console.log(this.name); // outputs : "great form"
console.log(response.data); // ajax response data
});
});
};
太棒了!!真不敢相信我以前从来都不知道上下文参数。回到这里,不要再说了!谢谢!!