通过php

时间:2018-08-12 09:28:37

标签: php jquery html ajax

我想为从数据库中检索到的每一行都有一个“ Make admin”按钮。此按钮应使指定的用户通过AJAX成为管理员。想法是使每个按钮的ID等于该行提取的电子邮件,并为每个按钮分配一个onclick ajax。 Ajax应该发送附有特征的电子邮件,该电子邮件将更新用户类型列并将其设置为“ ADMIN”。

while($row = mysqli_fetch_array($result)){
        //show all data using <td>
        $email = $row['email'];
        echo "<td><button id=".$row['email'].">Make Admin</button></td>";
        echo "<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>";
        echo "<script type='text/javascript'>
                    $(document).ready(function(){
                        $('#$email').click(function(){
                            $.ajax({
                                type: 'GET',
                                url: 'makeadmin.php',
                                data: ({email: '".$row['email']."'}),
                                datatype: 'html',
                                success: function(response){                    
                                            $('#makeadmin').html(response);
                                            //alert(response);
                                        },
                                error:function(exception){alert('Exeption:'+exception);}
                            });
                        });
                    });
                    </script>";
}

上面的代码在控制台中显示以下错误:

Error: Syntax error, unrecognized expression: #admin@gmail.com

2 个答案:

答案 0 :(得分:1)

请尝试制作类似这样的内容 在此行

 $('#$email').click(function(){

替换为

$('#".str_replace(array('@', '.'), array('_','-'), $email)."').click(function(){

并对<td>

的ID进行相同的操作
echo "<td><button id=".str_replace(array('@', '.'), array('_','-'), $row['email']).">Make Admin</button></td>";

答案 1 :(得分:1)

像'#'和'。您不能在命名HTML标签ID或类时使用“ @”。另外,id的值也没有引号。

您可以采取哪些措施解决此问题:

  1. 使用自定义HTML标记属性存储电子邮件地址。

  2. 将类分配给按钮,并将click事件绑定到该类。这将允许您将js代码放在单独的JS文件中。

因此代码应如下所示:

HTML

while($row = mysqli_fetch_array($result)){
        //show all data using <td>
        $email = $row['email'];
        $id = $row['id'];
        echo "<td><button id='user_".$id."' class='make_admin' email='".$email."'>Make Admin</button></td>";
   }

JS

    $(document).ready(function(){
                    $('.make_admin').click(function(){
                        $.ajax({
                            type: 'GET',
                            url: 'makeadmin.php',
                            data: ({email: $(this).attr('email')}),
                            datatype: 'html',
                            success: function(response){                    
                                        // UI changes
                                        //alert(response);
                                    },
                            error:function(exception){alert('Exeption:'+exception);}
                        });
                    });
                });