无法删除上传的图片

时间:2013-12-30 04:26:20

标签: jquery ajax grails groovy

HTML / GSP

<li class="gallery-item">
<form>
.....
    <a data-portfolio-id="${portfolioInstance?.id}" data-id="${part.id}" class="btn-delete" href="javascript:void(0);">
</form>

</li>

JS

$('.btn-delete').click(function(e){
    e.preventDefault();

    $.ajax({
    url: '/deletePart/'+ $(this).data('id'),
        type: 'GET',
        dataType: 'json',
        success: function(response) {

            $(this).closest('.gallery-item').fadeOut().remove();
                            //remove() seems not to be working?
        },
        error: function( error ) {
            console.log( error );
        }
    });
});

控制器

    def deletePart() {
    log.debug params
    def id = params.id?:params.partId
    def part = PortfolioPart.get(id)
    // log.debug " >>>>>>" + part
    def portfolio = part.portfolio

  try {
        part.delete(flush: true)
        flash.message = message(code: 'default.deleted.message', args: [message(code: 'part.label', default: 'PortfolioPart'), id])
    } catch (DataIntegrityViolationException e) {
        flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'portfolio.label', default: 'Portfolio'), id])
        redirect(action: "edit", id: portfolio.id)
    }

    withFormat {
        html {
            redirect(action: "edit", id: portfolio.id)
        }
        json {
            def out = [id:id]
            render out as JSON
        }
    }
}

尝试使用之前上传的ID删除图片,但它一直给我500个内部服务器错误。

获取http:// localhost / deletePart / [220] 500(内部服务器错误)

感谢任何帮助!

更新 好的设法让错误消失,但只剩下remove(),不会删除gallery-item块?

2 个答案:

答案 0 :(得分:1)

这听起来像一个问题,默认情况下Domain对象有一个方法将params id解析为long,其中你的对象没有这个方法。 Params是字符串的集合,因此您需要做的是将param.id从字符串更改为long。尝试:

def part = PortfolioPart.get(params.long('id'))
祝你好运。

答案 1 :(得分:0)

根据错误消息,它确定 id String,而Grails DB中的ID为Long,因此您需要在调用{{1}之前对其进行转换get Domain类的方法:

PortfolioPart

要检查它是否是一个字符串,你可以这样做:

def part = PortfolioPart.get(Long.valueOf(id).longValue());