【问题标题】:UNDEFINED when trying to get value of an attribute [duplicate]尝试获取属性值时未定义[重复]
【发布时间】:2015-04-03 20:56:49
【问题描述】:

我正在尝试获取属性“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");
  }
});

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

我怎样才能得到它的价值?

【问题讨论】:

  • 嗯,this 在那个上下文中是 ajax 函数,为什么 ajax 函数会有数据属性?

标签: jquery ajax


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您应该在 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");
      }
    });
    

    【讨论】:

      【解决方案3】:

      每当您在另一个函数中定义了一个函数时,内部函数中的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");
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多