尝试获取属性值时未完成

时间:2015-04-03 20:56:49

标签: jquery ajax

我试图获取属性'data-tablename'的值。

$.ajax({ 
  type: 'post', 
  url: "<?= base_url(); ?>table/moveTable/",
  data: "table_name=" + $(this).attr("data-tablename"), 
  success: function(r) {
      $.notify($(this).attr("data-tablename") + " was successfully added", "success");
  }
});

当我尝试使用此代码时,我收到消息“未定义已成功添加”

我如何获得它的价值?

3 个答案:

答案 0 :(得分:2)

在ajax调用之前添加var tableName = $(this).attr("data-tablename");,然后用tableName变量替换$(this).attr("data-tablename")

答案 1 :(得分:1)

您应该在ajax操作之前将$(this)赋值给变量,然后在匿名函数中使用该变量:

var $this = $(this);

$.ajax({ 
  type: 'post', 
  url: "<?= base_url(); ?>table/moveTable/",
  data: { "table_name": $(this).attr("data-tablename") },
  success: function(r) {
      $.notify($this.attr("data-tablename") + " was successfully added", "success");
  }
});

答案 2 :(得分:1)

每当你在另一个函数中定义一个函数时,内部函数中的this将不会与外部函数相同,除非有特别设置它的东西。在这种情况下,您可以使用jQuery.ajax的context配置,这会将所有回调中this的值设置为您想要的任何值。

$.ajax({ 
  type: 'post', 
  url: "<?= base_url(); ?>table/moveTable/",
  data: "table_name=" + $(this).attr("data-tablename"), 
  context: this,
  success: function(r) {
      $.notify($(this).attr("data-tablename") + " was successfully added", "success");
  }
});