Ajax post和Grails渲染导致页面刷新

时间:2016-05-16 20:34:09

标签: ajax grails controller

所以,我有一个控制器设置如下: -

def show(Long id) {
    def testObjectInstance = TestObject.get(id)

    if (!testObjectInstance) {
        redirect(action: "list")
        return
    }

    println("show object ID " + testObjectInstance.id)
    render(template: "show", model: [testObjectInstance: testObjectInstance])
}

然后我收到了一个包含以下代码的帖子: -

function loadObject(objID){ var pathPrefix = $("#fullPathPrefix").val(); $.postJSON(pathPrefix + "testObject/show",{id : objID}, function(data) { $("#rightObjMgtPane").html(data); }); }

我可以看到所有println按预期显示,页面甚至按预期呈现,但突然整个页面因某些原因刷新,我无法解决原因。

我在另一个地方有另一个控制器似乎工作,它有完全相同的渲染线,并且工作正常,所以我不知所措。

1 个答案:

答案 0 :(得分:1)

尝试使用

$.ajax({
 type: 'POST',
 url: '/testObject/Show',
 data: '{"id":"objID"}',
 success: function(data) { 
  $("#rightObjMgtPane").html(data); 
 },
 contentType: "application/json",
 dataType: 'json'
});

而不是

function loadObject(objID){
var pathPrefix = $("#fullPathPrefix").val();
$.postJSON(pathPrefix + "testObject/show",{id : objID}, function(data) {
    $("#rightObjMgtPane").html(data);
});
}

另一方面,我需要警告你使用:

if (!testObjectInstance) {
    redirect(action: "list")
    return
}

将在testObject / list

中的任何位置进行渲染