javascript $(this).data()不起作用

我写了一些代码,使用ajax将值发送到数据库。 但是,我的警报框显示undefined的值。 我不明白我的问题是什么。

  $(document).ready(function(){ $(document).on('click', '#publish', function(){ var status = $(this).data('data-pid'); alert(status); $.ajax ({ url: 'update_about_status.php', data: {"statusValue": status}, type: 'post', success: function(result) { $('.modal-box').text(result).fadeIn(700, function() { setTimeout(function() { $('.modal-box').fadeOut(); }, 2000); }); } }); }); });  print''; 

当您使用data() api时,不需要使用data-前缀来读取data-*属性值 – 请参阅data-html5

 var status = $(this).data('pid'); 

如果您使用的是.attr(),那么您需要使用完整的属性名称

 var status = $(this).attr('data-pid'); 

您不必提供data()函数的data() in参数,但您必须仅提供给piddata-用于标识数据属性。

现场演示

 var status = $(this).data('pid'); 

使用data- *属性嵌入自定义不可见数据

自定义数据属性是无命名空间中的属性,其名称以字符串“data-”开头,连字符后至少有一个字符,与XML兼容,并且不包含大写ASCII字母, 引用 。

你可以尝试改为:

 var status = $(this).data('pid');