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

时间:2016-07-04 08:43:24

标签: javascript jquery ajax

我有以下用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的值?

2 个答案:

答案 0 :(得分:0)

问题是因为this的范围已在beforeSend的{​​{1}}处理程序中发生了变化。要解决此问题,请将引用存储在处理程序之外:

$.ajax

答案 1 :(得分:0)

this指的是错误的背景。在var that = this方法中添加send,然后通过它参考preloader_id:that.preloader_id