我在Javascript类上创建了两个方法:
this.saveData = function(){
var url_send = 'm1=1&m2=2'
$.ajax({
url: '/save.php',
dataType : "text",
data:url_send,
type:'POST',
success: function(data) {
// this is does not correct
this.showAcceptBox('error_msg_0');
}
});
};
this.showAcceptBox = function(msg_id){
$('#error_box').removeClass('alert-negative');
$('#error_box').html($('#'+msg_id).html());
$('#error_box').show();
setTimeout(function(){
$('#error_box').fadeOut('slow',function(){
$('#error_box').addClass('alert-negative');
});
},this.message_box_timeout);
};
如何将我的类中的调用方法更正为jQuery .ajax()
?
答案 0 :(得分:3)
尝试在闭包中捕获this
:
this.saveData = function() {
var url_send = { m1: 1, m2: 2 };
var _self = this;
$.ajax({
url: '/save.php',
dataType : 'text',
data: url_send,
type: 'POST',
success: function(data) {
_self.showAcceptBox('error_msg_0');
}
});
};
或使用context
开关将其作为参数传递:
this.saveData = function() {
var url_send = { m1: 1, m2: 2 };
$.ajax({
url: '/save.php',
dataType : 'text',
data: url_send,
context: this,
type: 'POST',
success: function(data) {
this.showAcceptBox('error_msg_0');
}
});
};
的引用
<强>上下文强>
此对象将成为所有与Ajax相关的回调的上下文。通过 默认情况下,上下文是表示ajax设置的对象 在调用中使用($ .ajaxSettings与传递给的设置合并 $阿贾克斯)。例如,如上下文所指定的那样指定DOM元素 请求的完整回调的上下文,如下所示:
$.ajax({ url: "test.html", context: document.body, success: function(){ $(this).addClass("done"); } });
答案 1 :(得分:0)
我不知道你如何给你的msg_id:
this.showAcceptBox = function(data){
$('#error_box').removeClass('alert-negative');
$('#error_box').html(data);
$('#error_box').show();
setTimeout(function(){
$('#error_box').fadeOut('slow',function(){
$('#error_box').addClass('alert-negative');
});
},this.message_box_timeout);
};
或者你可以在你的ajax答案中找到你想要的任何东西,比如$('#msg_id',data)。一切都取决于你的回电。