【问题标题】:How can I get the data attribute from a php variable?如何从 php 变量中获取数据属性?
【发布时间】:2016-04-03 08:08:41
【问题描述】:

我有一个可以使用 ajax 和 jQuery 从 MySql 数据库中删除记录的表单。我试图让 jQuery 只选择传递给它的相关记录,而不仅仅是删除它目前所做的第一行记录。我想我需要得到

<div class="'.$id.'">

从我的表单中,使其成为可以选择的数据属性。希望我说清楚。非常感谢。

<script type="text/javascript">
    //Delete Review
    $(document).ready(function(){
        //Need to get $id here.
        $(".deleteReview").click(function (e) {
            e.preventDefault();
            var username = $("#username").val();
            var film_id = $("#film_id").val();
            var id = $("#id").val();

            $.post('ajax_deleteReview.php', {
                username: username,     
                film_id: film_id, 
                id: id
            }, function(data) {
                $("#message").html(data);
                $("#message").hide();
                $("#message").fadeIn(500); 
                $("#message").fadeOut(2500); 
            });
            return false;
        });
    });
</script>
<form>
    <div class="'.$id.'">
        <input type="hidden" id="username" name="username" value="'. $username.'">
        <input type="hidden" id="film_id" name="film_id" value="'.$film_id .'">
        <input type="hidden" id="id" name="id" value="'.$id .'">
        <button type="submit" id="" class="btn btn-danger btn-xs pull-right">delete</button>
    </form>
</div>

【问题讨论】:

  • deleteReview 元素在哪里?胡思乱想,你需要$(this).closest('div').attr('class')
  • 是 deleteReview 元素。
  • 为什么不给&lt;div id ="&lt;?php $id; ?&gt;"
  • $(".deleteReview"). 永远不会使用此代码触发。 @Dray 如果$id 是整数,那将是无效的; ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").w3.org/TR/html4/types.html#type-id
  • 哦!我完全忘记了!谢谢哥们。 @chris85

标签: php jquery mysql ajax


【解决方案1】:

首先在你的 PHP 中做这样的事情,你将数据属性添加到你的删除按钮,因为你实际上并没有提交一个真实的表单。我还将 deleteReview 类移到了按钮上。

print '<button type="submit" class="deleteReview" data-id="'.$id.'" data-film-id="'.$film_id.'" data-username="'.htmlentities($username).'" class="btn btn-danger btn-xs pull-right">delete</button>';

然后,在你的 jQuery 中,像这样更新点击事件回调:

$(".deleteReview").click(function (e) {
    e.preventDefault();
    var username=$(this).data('username');
    var film_id=$(this).data("film-id");
    var id=$(this).data('id');
    /* the rest of your code */

使用 jQuery 使用 $(this).data('some-attribute-name') 可以轻松访问数据属性

【讨论】:

    【解决方案2】:

    我建议您使用 data-* 前缀属性来持久化您的数据。

    HTML

     <div data-id="'.$id.'" data-username="'. $username.'" data-filmid="'.$film_id .'" class="deleteReview">
        <button type="submit" id="" class="btn btn-danger btn-xs pull-right">delete</button>
     <div >
    

    然后你可以使用.data(key)获取它

    返回 jQuery 集合中第一个元素在命名数据存储中的值,由 data(name, value) 或 HTML5 data-* 属性设置

    脚本

     //Delete Review
    $(document).ready(function(){
        //Need to get $id here.
        $(".deleteReview").click(function (e) {
            e.preventDefault();
            var username = $(this).data("username");
            var film_id = $(this).data('filmid');
            var id = $(this).data('id');
    
            ......
            return false;
        });
    });
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签