鍍金池/ 問(wèn)答/HTML/ ajax刪除數(shù)據(jù)?

ajax刪除數(shù)據(jù)?

需求是客戶點(diǎn)擊查詢,獲取后臺(tái)數(shù)據(jù),頁(yè)面展示視頻列表,時(shí)間,和地點(diǎn)信息。
點(diǎn)擊刪除,刪除單個(gè)視頻及其信息。

js代碼:

//查詢操作
function getInfo(pagenum,createtime,location) {

sessionStorage.setItem('pagenum', pagenum); //保存當(dāng)前頁(yè)數(shù)
$.ajax({
    type: 'post',
    url: 'http://127.0.0.1:8080/gateway/CaptureandRecord?method=getvideo',
    dataType: 'text',
    data: {
        'pagenum': pagenum,
        'createtime':createtime,
        "location":location,
    },
    async: false,
    success: function(data) {
        console.log("data"+data);
        var data = JSON.parse(data);
        console.log("data"+data);
        var list = data.videos;

        if (data.flag == "success") {
            $('#content .row').html("");
            for (var i = 0; i < (data.countmessage<parseInt(pagenum)*8?data.countmessage-(parseInt(pagenum)-1)*8:8); i++) {
                $('#content .row').append(

                    '<div class="col-md-3">' +
                    ' <div class="view">' +
                    '<video id="'+list[i].uid+'" src="' + list[i].video + '" controls="controls">' +
                    '</video>'+
                    '</div>' +
                    '<ul>' +
                    '<li>' +
                    '<span>時(shí)間:</span>' +
                    '<span>' + data.time[i] + '</span>' +
                    '</li>' +
                    '<li>' +
                    '<span>位置:</span>' +
                    '<span>' + list[i].location + '</span>' +
                    '</li>' +
                    '<li>' +
                    '<button class="delete" onclick="delInfo(' + list[i].uid + ')" data-whatever="' + list[i].uid + '">刪除</button>' + 
                    '</li>' +
                    '</ul>' +
                    '</div>'
                )
            }
        }



//刪除操作
function delInfo(button,id) {

$.ajax({
    type: 'post',
    url: 'http://127.0.0.1:8080/gateway/CaptureandRecord?method=deletevideobyuid',
    dataType: 'text',
    data: {
        "uid": id,
    },
    async: true,
    success: function(data) { 
        var data = JSON.parse(data);
        if (data.flag == 'success') {
            alert('刪除成功');
         $('button').parents('.col-md-3').remove();
        } else {
            alert("刪除失敗");
        }
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log(XMLHttpRequest.status);
        console.log(XMLHttpRequest.readyState);
        console.log(textStatus);
    },
})

}

查詢操作中的刪除按鈕button在點(diǎn)擊后調(diào)用delInfo(button,id)時(shí),只能返回id,無(wú)法傳入?yún)?shù)button。(傳入button的作用是為了通過(guò)button按鈕,找到圖片的父級(jí),將其刪除)
導(dǎo)致在數(shù)據(jù)庫(kù)刪除了,卻無(wú)法在頁(yè)面刪除,要怎么解決?

回答
編輯回答
薄荷糖
復(fù)制粘貼可用
function getInfo(pagenum,createtime,location) {

    sessionStorage.setItem('pagenum', pagenum); //保存當(dāng)前頁(yè)數(shù)
    $.ajax({
        type: 'post',
        url: 'http://127.0.0.1:8080/gateway/CaptureandRecord?method=getvideo',
        dataType: 'text',
        data: {
        'pagenum': pagenum,
        'createtime':createtime,
        "location":location,
        },
        async: false,
        success: function(data) {
        console.log("data"+data);
        var data = JSON.parse(data);
        console.log("data"+data);
        var list = data.videos;

        if (data.flag == "success") {
            $('#content .row').html("");
            for (var i = 0; i < (data.countmessage<parseInt(pagenum)*8?data.countmessage-(parseInt(pagenum)-1)*8:8); i++) {
                $('#content .row').append(

                    '<div class="col-md-3">' +
                    ' <div class="view">' +
                    '<video id="'+list[i].uid+'" src="' + list[i].video + '" controls="controls">' +
                    '</video>'+
                    '</div>' +
                    '<ul>' +
                    '<li>' +
                    '<span>時(shí)間:</span>' +
                    '<span>' + data.time[i] + '</span>' +
                    '</li>' +
                    '<li>' +
                    '<span>位置:</span>' +
                    '<span>' + list[i].location + '</span>' +
                    '</li>' +
                    '<li>' +
                    '<button class="delete" onclick="delInfo(this,' + list[i].uid + ')" data-whatever="' + list[i].uid + '">刪除</button>' + 
                    '</li>' +
                    '</ul>' +
                    '</div>'
                )
            }
        }
        }
    })
}

/**
 * [delInfo 刪除]
 * @param   當(dāng)前對(duì)象 this
 * @param   ID
 * @return   
 */
function delInfo(obj,id) {
    var t = obj;
    $.ajax({
        type: 'post',
        url: 'http://127.0.0.1:8080/gateway/CaptureandRecord?method=deletevideobyuid',
        dataType: 'text',
        data: {
            "uid": id,
        },
        async: true,
        success: function(data) { 
            var data = JSON.parse(data);
            if (data.flag == 'success') {
                alert('刪除成功');
             $(t).parents('.col-md-3').remove();
            } else {
                alert("刪除失敗");
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.log(XMLHttpRequest.status);
            console.log(XMLHttpRequest.readyState);
            console.log(textStatus);
        },
    })
}
2017年8月9日 18:56
編輯回答
赱丅呿

你這個(gè)button是后生成,需要用$().on();來(lái)綁定操作,建議看下JQ的API

2018年3月20日 00:58
編輯回答
怣痛

刪除之后的callback里面再重新執(zhí)行一次getInfo(),不行么?

2017年12月1日 00:09
編輯回答
笑浮塵

生成列表的時(shí)候,將col-md-3的class屬性改為calss="col-md-3 row-id-'+list[i].id+'"。然后在delInfo里面在用jquery查找這個(gè)class就好了

2018年2月1日 20:29
編輯回答
小曖昧

調(diào)用delInfo的時(shí)候你只傳了id啊, 并沒(méi)有傳button (this)

2018年2月16日 08:09
編輯回答
裸橙
$('button').parents('.col-md-3').remove();

你這句是刪頁(yè)面上所有的.col-md-3啊,這樣都刪不了?
其實(shí)你把onclick換成jQ的事件代理寫(xiě)法就行了,直接用$(this)多好。事件傳參不是那么寫(xiě)的嘛。
另外ajax里的dataType是text后邊干嘛還JSON.parse一遍呢,直接寫(xiě)json就行。sucesss回調(diào)的傳參和定義局部變量的名字能分開(kāi)還是別寫(xiě)一樣吧。async參數(shù)不建議用了,保持默認(rèn)的異步就好。手機(jī)端就不放代碼了。

2018年6月30日 12:32