首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ajax中获得`submit.preloader_id =“div#some”;` in‘`beforesend`’方法的值?

如何在ajax中获得`submit.preloader_id =“div#some”;` in‘`beforesend`’方法的值?
EN

Stack Overflow用户
提问于 2016-07-04 08:43:24
回答 2查看 35关注 0票数 1

我有以下用javascript编写的代码,

代码语言: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');
        }
      }
    });
  }
}

是这样叫的

代码语言:javascript
复制
submit.preloader_id = "form-id";
submit.send('div#some-id');

问题是当我试图在这个方法中获得在preloader_id中分配的值时

代码语言:javascript
复制
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方法中的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-04 08:48:34

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

代码语言:javascript
复制
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');
        }
      }
    });
  }
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-04 08:49:04

this指的是错误的上下文。在您的var that = this方法中添加send并通过它引用preloader_id:that.preloader_id

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38180293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档