从javascript按钮删除PHP点击

时间:2015-10-04 18:00:12

标签: javascript php sql mariadb

我目前正在做一个显示禁令的PHP页面,并为取消用户提供了一个选项。 我似乎无法使按钮工作并运行查询到unban。任何帮助都会很有用。

它目前无效,我也不确定如何在我得到时显示Pnotice错误

  

未捕获的TypeError:无法读取属性' required'未定义的

以下是lightcms.php中为banlist.php;

列出的函数
function banListAll() {
    global $db;
    $getBanListAllQuery = "SELECT * FROM users_bans";
    $getBanListAll = $db->query($getBanListAllQuery);
    while ($showBanListAll = $getBanListAll->fetch_assoc()) {   
        echo "<tr id=\"banID" . $showBanListAll['id'] . "\">";
        echo "<td>";
        echo $showBanListAll['id'];
        echo "</td>";       
        echo "<td>";        
        echo $showBanListAll['added_date'];     
        echo "</td>";               
        echo "<td>";        
        echo $showBanListAll['value'];      
        echo "</td>";       
        echo "<td>";        
        echo $showBanListAll['reason'];     
        echo "</td>";       
        echo "<td>";        
        echo $showBanListAll['expire'];     
        echo "</td>";       
        echo "<td>";        
        echo "<button data-id=\"" . $showBanListAll['id'] . "\" type=\"button\" class=\"btn btn-xs btn-danger btn-unban\">Unban</button>";      
        echo "</td>";       
        echo "</tr>";       
    }

}

这是banlist.php上的javascript

<script type="text/javascript">
$(".btn-unban").click(function(){
    var articleId = "#banID"+ $(this).attr("data-id");
    var myData = "unban="+ $(this).attr("data-id"); //post variables

    var formData = new FormData(this);
    $.ajax({
        type: "POST",
        url: "./engine/post/unban.php",
        dataType:"json",
        data: myData,
        success: processJson
    });

    function processJson(data) { 

        // here we will handle errors and validation messages
        if (!data.success) {

            if (data.errors.required) {
                new PNotify({
                    title: 'Uh oh!',
                    text: data.errors.required,
                    type: 'error'
                });
            }

        } else {

            new PNotify({
                title: 'Success!',
                text: data.message,
                type: 'success'
            });
            $(articleId).fadeOut("slow");

        }
    }
});

</script>

这是unban.php文件

<?php
require_once $_SERVER['DOCUMENT_ROOT']."/admin_required.php";

$id = $_POST['id'];


$insert = "DELETE users_bans WHERE id = '$id'";// Do Your Insert Query


if($db->query($insert)) {
    echo '{"success":true,"message":"User was unbanned!"}';
} else {
    echo '{"error":true,"message":"Sorry this has not worked, try another     time!"}';
}

//Need to work on displaying the error^
?>

1 个答案:

答案 0 :(得分:0)

你的JS寻找&#34; errors.required&#34;但你的PHP发送&#34;错误&#34;没有要求。

这里有一些代码编辑(IMO)清理代码。 (对sql的任何更改都基于您使用mysqli的假设。基于<body> <div class="body"> <header id="header"></header> </div> <div role="main" class="main"> <div class="slider-container"> <div class="col-md-offset-1 col-md-5" style="position:relative;"> <div style="position:absolute;top:200px;left:100px; background: #CCC;"> <iframe allowfullscreen="" src="http://www.youtube.com/embed/oNBBijn4JuY?showinfo=0&amp;wmode=opaque" frameborder="0"></iframe> </div> <div style="max-width:100%;max-height:100%;margin:auto;position:relative;"> <img src="https://dl.dropboxusercontent.com/s/cqyrqtx4i7zwt0w/tvset_small_cropped.png" /> </div> </div> </div> </div> </body> 的使用的假设。请考虑至少将unban.php的更改视为您目前拥有的{{3} }

你的新banListAll函数:

->fetch_assoc()

banlist.php上的新JS

function banListAll() {
    global $db;
    // don't use SELECT * if you can help it. Specify the columns
    $getBanListAllQuery = "SELECT id, added_date, value, reason, expire FROM users_bans";
    $getBanListAll = $db->query($getBanListAllQuery);

    while ($showBanListAll = $getBanListAll->fetch_assoc()) {
        $showBanListAll[] = "<button type='button' class='btn btn-xs btn-danger btn-unban'>Unban</button>";
        // array_slice to get ignore the ['id']
        echo "<tr data-banid='" . $showBanListAll['id'] . "'><td>" . implode("</td><td>", array_slice($showBanListAll,1)) . "</td></tr>";    
    }
}

这是unban.php文件

<script type="text/javascript">
function processJson(data) {
    // here we will handle errors and validation messages
    if (data.error === false) {
        row.fadeOut("slow");
    }
    // assuming we always get a "message"
    new PNotify({
        title : 'Uh oh!',
        text : data.message,
        type : 'error'
    });
}

$(".btn-unban").click(function() {
    var $this = $(this); // creating jQuery objects can be costly. save some time
    var row = $this.closest('tr');
    var banID = row.data('banid');
    var postData = { unban: banID };

    var formData = new FormData(this);
    $.ajax({
        type : "POST",
        url : "./engine/post/unban.php",
        dataType : "json",
        data : postData,
        success : processJson
    });
});

</script>

如果您认为unban.php不必要地长,这里没有评论

<?php
require_once $_SERVER['DOCUMENT_ROOT']."/admin_required.php";

$id = $_POST['id'];

// Don't just concat variables that came from users into your DB queries.
// use paramterized queries. If $db is a mysqli connection
$insert = "DELETE FROM users_bans WHERE id = ?";// Do Your Insert Query
$deleteStmt = $db->prepare($insert);
// if id is a number change "s" to "i" below
$deleteStmt->bind_param("i",$id);

if($deleteStmt->execute()) {
    echo jsonResult(false,"User was unbanned!");
} else {
    echo jsonResult(true,"Sorry this has not worked, try another     time!");
}

// add this function to return results to your JS functions
// should make it harder to put "errors" instead of "error" ;)
function jsonResult($hasErrors, $msg) {
    return json_encode(array("error"=>$hasErrors,"message"=>$msg));
}