我有以下用javascript编写的代码,
var submit = {
preloader_id: "",
send:function (form_id) {
var url = $(form_id).attr("action");
$.ajax({
type: "POST",
url: url,
data: $(form_id).serialize(),
dataType: 'json',
success:(result) => {
},
error: function(result) {
// Some errors
},
beforeSend: function() {
console.log(this.preloader_id);
if (this.preloader_id != "") {
run_preloader(this.preloader_id);
}
},
completes: function() {
if (this.preloader_id != "") {
run_preloader(this.preloader_id, 'true');
}
}
});
}
}
并且像这样调用
submit.preloader_id = "form-id";
submit.send('div#some-id');
问题是当我尝试在此方法中的preloader_id
中分配值时
beforeSend: function() {
console.log(this.preloader_id); // look if there is id name to fetch
if (this.preloader_id != "") {
run_preloader(this.preloader_id);
}
},
我未定义,
如何在ajax中的submit.preloader_id = "div#some-id";
方法中获取beforesend
的值?
答案 0 :(得分:0)
问题是因为this
的范围已在beforeSend
的{{1}}处理程序中发生了变化。要解决此问题,请将引用存储在处理程序之外:
$.ajax
答案 1 :(得分:0)
this
指的是错误的背景。在var that = this
方法中添加send
,然后通过它参考preloader_id:that.preloader_id