gpt4 book ai didi

Javascript - 从 $.post 回调后,实例类的属性未定义

转载 作者:行者123 更新时间:2023-11-30 07:27:58 24 4
gpt4 key购买 nike

我有以下 js 片段:

<script language="javascript">
function test() {
this.a = 10;
};
test.prototype.next = function () {
alert('before: ' + this.a);
$.ajax({
url: 'some-url',
async: true,
type: 'POST',
dataType: 'json',
success: this.callback

});
};
test.prototype.callback = function () {
alert('after: ' + this.a);
};

$(document).ready(function () {
var test1 = new test();
test1.next();
});
</script>

它总是产生结果:之前:10之后:取消定义。

为什么在$.post的回调函数中,类的属性是未定义的。谁能帮帮我?非常感谢。

最佳答案

success: this.callback

这行不通。您需要将回调绑定(bind)到实例 (this)。否则它将失去它的范围。不幸的是,函数本身不会记住它。

手动方式是

var me = this;

// .....

success: function(x,y,z) { me.callback(x,y,z) }

我现在找不到 jQuery 的内置助手。在 CoffeeScript 中,您只需使用粗箭头 =>

更新:找到了 jQuery 方式:有一个参数 context 可以为 $.ajax 指定,它将变成 this 用于所有回调:

 success:  this.callback,
context: this

关于Javascript - 从 $.post 回调后,实例类的属性未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8208318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com