2016-05-16 43 views
0

所以,我得建立與控制器如下: -阿賈克斯後和Grails渲染造成頁面刷新

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都按預期顯示,頁面甚至可以按照預期呈現,但是由於某些原因突然刷新整個頁面,我無法解決原因。

我在另一個地方有另一個控制器,它似乎在工作中具有完全相同的渲染線,並且工作正常,所以我很茫然。

+0

我注意到後如果我在'$(「#rightObjMgtPane」)。html(data)之後放置一個警報,那麼更多挖掘整個渲染模板的過程似乎工作正常,並顯示新的html;'這也顯示出來,但是當我關閉整個頁面刷新的時候,如果我保留chrome dev工具中的日誌,網絡選項卡中的所有以前的項目不再顯示返回的html(但事先做好),並且如果我不'保存它們的網絡選項卡完全清空並從頭重新填充...! – MorkPork

回答

0

嘗試使用

$.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