ajax内部访问类功能成功
access class function inside ajax success
im试图在ajax成功回调中分配一个变量。我知道,为了分配值,我需要使用回调函数。但是我希望这个函数在类中。有可能实现这样的东西吗?
function callMgmt_class() {
this.room_id = 'Error';
this.assignRoomVar = function(room_id) {
alert();
this.room_id = room_id;
}
this.getRoomID = function() {
$.ajax({
url: "/get_room_id.php",
dataType: "json",
success: function(data) {
this.assignRoomVar(data.room_id);
}
})
}
}
有什么方法可以使用bind吗?我试过了:
success: function(data) {
(function() { this.assignRoomVar(data.room_id); }).bind(this);
}
所以我没有得到任何错误,但函数似乎没有被调用。
您对它的使用是有缺陷的。'回调中的this将使用回调的上下文,而您需要的是类的上下文。您可以通过将"this"上下文缓存在变量中并使用它来实现这一点。
this.getRoomID = function() {
var me = this;
$.ajax({
url: "/get_room_id.php",
dataType: "json",
success: function(data) {
me.assignRoomVar(data.room_id);
}
})
}
this
不是您要查找的this
。
this
关键字很棘手,根据上下文的不同,会有不同的引用。当您在ajax成功函数中访问this
时,它不再引用callMgmt_class对象(我认为它将引用ajax函数)。
解决这一问题的最佳方法是,当您确定this
的值时,将其分配给另一个变量。因此,在你的功能开始时,是最好的选择
this.getRoomID = function() {
var that= this;
//Now use that instead of this when you want to refer to the callMgmt_class object
$.ajax({
url: "/get_room_id.php",
dataType: "json",
success: function(data) {
that.assignRoomVar(data.room_id);
}
})
}
添加:
我认为使用bind
或apply
是其他选择,但我不是很熟悉,所以我将把它留给其他人来回答。
相关文章:
- Jquery表单插件未显示成功功能
- 成功:功能(数据);不使用命名函数
- 只有在前一个功能成功完成的情况下,我才能正确地启动此功能
- JQuery AJAX没有't获得成功回调功能
- 谷歌登录成功功能在我阻止第三方cookie时没有任何作用
- 成功提交 Web 表单后,Javascript 重置功能将不起作用
- 骨干.js:Save的成功功能根本不起作用
- 如何触发一个新的 X-Editable 从当前功能的成功函数中打开
- ajax内部访问类功能成功
- 如何检查PHP邮件功能是否成功,然后运行一个javascript代码
- Extjs 4上传成功功能没有反应
- 将显示功能应用于ajax成功创建的元素
- 包括成功/失败jQuery / Ajax功能
- 列表框上的EventListener在物品掉落后不再工作[所有javascript功能在成功掉落后停止]
- AJAX成功服务器端功能
- Div不显示更改功能,但在ajax成功
- 只有在功能成功完成后才卸载页面
- 成功后启动下一个功能
- 为什么我不能用这个.贴出成功功能
- JQuery Mobile db成功事件不触发功能