ThinkPHP3.2.3選擇多個CheckBox刪除多條數據的實現(使用AJAX提交數據)

這個自己寫了一部分,也借鑑了下別人的,功能有很多不足(有時間我會繼續改進),如果有心人路過看到還望能留言解決下,謝了(在底部我會列出來)。

HTML頁面:

關鍵的兩個標籤

<a class="btn btn-xs btm-input btn-purple" onclick="deleteCheckBox()" id="sc" style="width: 60px" href="javascript:void(0);">
    刪除
</a>
...
<td class=""><input type="checkbox" name="sqdh[]" value="{$mx.sqdh}" ></td>
<td class="">{$mx.xxbbh}</td>

Javascript部分

<script>
    function deleteCheckBox() {
        //彈出提示,是否確定刪除
        if (confirm("確定要刪除嗎?")) {
            //將所有複選框的默認值放入數組中
            var check = document.getElementsByName('sqdh[]');
            var sqdh = new Array();
            //將所有選中複選框的默認值寫入到數組中
            for (var i = 0; i < check.length; i++) {
                if (check[i].checked)
                    sqdh.push(check[i].value);
            }
            //ajax開始運行
            $.ajax({
                url: "{:U('hzzfsc')}",
                type: "post",
                dataType: "json",
                data: {sqdh: sqdh},
                success: function (msg) {
                    //ajax成功返回數據要執行的代碼
                    location.reload(true);
                }
            });
        }
    }
</script>
PHP部分

public function hzzfsc()
{
    //接收ajax傳過來的值
    $sqdh = I('post.sqdh');
    //判斷傳過來的數組是否有值
    if (!empty($sqdh)) {
        //循環刪除傳過來的所有對應的消息
        foreach ($sqdh as $v) {
            $condition['sqdh'] = $v;
            //刪除該對應的數據
            $result_temp1 = M('主表名稱')->where($condition)->delete();
            $result_temp2 = M('子表名稱')->where($condition)->delete();
        }
        if ($result_temp1 !== false && $result_temp2 !== false) {
            $this->success();
        } else {
            $this->error();
        }
    }
}
不足之處:

1.是否確定要刪除那兒需要優化,如果不進行選擇,點擊刪除按鈕時也會彈出“確定要刪除嗎”信息,如果在沒選擇的情況下應該彈出“請選擇要刪除項”會更妥一些;

2.雖然使用了ajax但是頁面在形式上還是刷新的,大概是用了代碼中用了 location.reload(true);如果不用的話再點擊刪除按鈕後刪除項還在(但是數據庫裏面沒有了),刷新一次頁面後纔會消失;

3.後臺PHP代碼走到success時,如果填入提示成功信息,則刪除後不會提示該成功信息。

好了,就這些啦,以後會慢慢改進的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章