gpt4 book ai didi

javascript - 如何在ajax中获取 `submit.preloader_id = "div#some-id";` in ` beforesend`方法的值?

转载 作者:行者123 更新时间:2023-11-28 05:49:39 25 4
gpt4 key购买 nike

我用 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中的beforesend方法中获取submit.preloader_id = "div#some-id";的值?

最佳答案

问题是因为 this 的范围在 $.ajaxbeforeSend 处理程序中发生了变化。要解决此问题,请将引用存储在处理程序之外:

var submit = {
preloader_id: "",

send:function (form_id) {
var _this = this; // store here
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() {
// use here...
console.log(_this.preloader_id);
if (_this.preloader_id != "") {
run_preloader(_this.preloader_id);
}
},
completes: function() {
// and here...
if (_this.preloader_id != "") {
run_preloader(_this.preloader_id, 'true');
}
}
});
}
}

关于javascript - 如何在ajax中获取 `submit.preloader_id = "div#some-id";` in ` beforesend`方法的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180293/

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