0

我会尽量直截了当。基本上我使用 jquery 和 ajax 来调用 php 脚本并显示数据库中的成员。每个成员姓名旁边都有一个删除按钮。我想这样做,所以当您单击删除按钮时,它会删除该用户。只有那个用户。我遇到的麻烦是尝试仅从一个删除按钮中单击值。我将在下面发布我的代码。我已经尝试了很多东西,现在你可以看到我正在尝试将 url 中的哈希值更改为该成员,然后从 url 中获取值。那是行不通的,URL 中的值永远不会改变。所以我的问题是如何获得点击成员的价值。

    <script type="text/javascript">
    $(document).delegate("#user_manage", "pagecreate", function () {
        $.mobile.showPageLoadingMsg()   
        var friends = new Array();
        $.ajaxSetup({
            cache: false
        })
        $.ajax({
            url: 'http://example.com/test/www/user_lookup.php',
            data: "",
            dataType: 'json',
            success: function (data) {
                $.mobile.hidePageLoadingMsg();
                var $member_friends = $('#user_list');
                $member_friends.empty();

                for (var i = 0, len = data.length; i < len; i++) {
                    $member_friends.append("<div class='user_container'><table><tr><td style='width:290px;font-size:15px;'>" + data[i].username + "</td><td style='width:290px;font-size:15px;'>" + data[i].email + "</td><td style='width:250px;font-size:15px;'>" + data[i].active + "</td><td><a href='#" + data[i].username + "' class='user_delete' data-role='none' onclick='showOptions();'>Options</a></td></tr><tr class='options_panel' style='display:none'><td><a href='#" + data[i].username + "' class='user_delete' data-role='none' onclick='showId();'>Delete</a> </td></tr></table></div>");

                }
            }
        });
    });
</script>
                  <script>
                    function showId() {
                    var url = document.URL;
                    var id = url.substring(url.lastIndexOf('#') + 1);
                    alert(id);
                        alert(url);
                    }
                    </script>
4

5 回答 5

3

想法:

第一:我认为连接一个字符串然后将其附加到 DOM 元素会更容易。它更快。

第二:在您的按钮上,您可以使用数据库的用户 ID 或其他内容添加一个额外的属性,然后在 ajax 调用中发送它。从按钮单击获取属性时,使用

 $(this).attr('data-id-user');
于 2012-04-19T17:00:26.610 回答
0

这是您可以进行的非常简单的更改:

替换这部分:

 onclick='showId();'>Delete</a>

有了这个:

 onclick='showId("+data[i].id+");'>Delete</a>

这是新的 showId 函数:

function showId(id) {
                    alert(id);
                }
于 2013-06-28T03:59:55.277 回答
0
<a href="#" class="user_delete" data-id-user="<?php echo $theUsersId ?>"><?php echo $username ?></a>

同样,如果您通过 json 下拉用户,您可以像这样在回调函数中创建标记时对该属性进行编码:

'<a href="#'+data[i].username+'" data-user-id="'+ data[i].username + '" class="user_delete" data-role="none" >Options</a>'

所以考虑到你已经在做的事情,整个场景应该是这样的:

$(document).delegate("#user_manage", "pagecreate", function () {
    $.mobile.showPageLoadingMsg();   
    var friends = new Array(),
        $member_friends = $('#user_list'),
        // lets jsut make the mark up a string template that we can call replace on
        // extra lines and concatenation added for readability
        deleteUser = function (e) {
          var $this = $(this),
              userId = $this.attr('data-id-user'),
              href = $this.attr('href'),
              deleteUrl = '/delete_user.php';

              alert(userId);
              alert(href);
              // your actual clientside code to delete might look like this assuming
              // the serverside logic for a delete is in /delete_user.php
              $.post(deleteUrl, {username: userId}, function(){
                alert('User deleted successfully!');
              });
        },
        showOptions = function (e) {
          $(this).closest('tr.options_panel').show();
        }, 
        userTmpl = '<div id="__USERNAME__" class="user_container">'
                   + '<table>'
                   +    '<tr>'
                   +      '<td style="width:290px;font-size:15px;">__USERNAME__</td>'
                   +      '<td style="width:290px;font-size:15px;">__EMAIL__</td>'
                   +      '<td style="width:250px;font-size:15px;">__ACTIVE__</td>'
                   +      '<td><a href="#__USERNAME__" data-id-user="__USERNAME__" class="user_options" data-role="none">Options</a></td>'
                   +    '</tr>'
                   +    '<tr class="options_panel" style="display:none">'
                   +      '<td><a href="#__USERNAME__" data-id-user="__USERNAME__" class="user_delete" data-role="none">Delete</a></td>'
                   +    '</tr>'
                   +  <'/table>'
                   + '</div>';


    $.ajaxSetup({
        cache: false
    })

    $(document).delegate('#user_manage #user_container user_options', 'click.userlookup', showOptions)
      .delegate('#user_manage #user_container user_delete', 'click.userlookup', deleteUser);

    $.ajax({
        url: 'http://example.com/test/www/user_lookup.php',
        data: "",
        dataType: 'json',
        success: function (data) {
            $.mobile.hidePageLoadingMsg();
            var markup;
            $member_friends.empty();

            for (var i = 0, len = data.length; i < len; i++) {
                markup = userTmpl.replace('__USERNAME__', data[i].username)
                          .replace('__ACTIVE__', data[i].active)
                          .replace('__EMAIL__', data[i].email);

                $member_friends.append(markup);

            }
        }
    });
});
于 2012-04-19T18:16:33.293 回答
0

为什么不在 PHP 脚本中构造数据?然后您可以将索引(数据库中每一行的唯一变量)放在按钮 onclick 事件中。所以删除按钮将是:

<button onclick = "delete('indexnumber')">Delete</button>

然后您可以使用该变量发送到另一个 PHP 脚本以将其从数据库中删除。

于 2012-04-19T16:59:47.617 回答
0
$('body').on('click', 'a.user_delete', function() {
     var url = document.URL;
     var id = url.substring(url.lastIndexOf('#') + 1);
     alert(id);
     alert(url);
});
于 2012-04-19T16:59:58.633 回答