2013-01-22 47 views
0

我有這樣的Ajax代碼:Ajax調用鏈接到新的頁面沒有返回新的一頁

$.ajax({ 
     type: "POST", 
     url: "${createLink(controller:'MyController', action:'downloadFile') } target=\"_blank\" ", 
     data: {'names':JSON.stringify(names)}, 
     dataType: 'json' 
}); 

調用該控制器的方法,其工作

def downloadFile = 
{ 
    List<JSON> Mynames = JSON.parse(params.names) 
    Mynames.each{println "MY ID is: $it"} 

    [Mynames:Mynames] 
} 

它打印出我的ID是線,但它不呈現這樣的downloadFile視圖:

<%@ page contentType="text/html;charset=UTF-8" %> 
<html> 
    <head> 
    <title></title> 
    </head> 
    <body> 
    test 
    </body> 
</html> 

但是,它沒有渲染它。我怎樣才能解決這個問題?謝謝。

回答

1

請花些時間來閱讀關於Ajax的內容,瞭解它的用途以及它的工作原理。你有一個根本的誤解。

$.ajax({ 
     type: "POST", 
     url: "${createLink(controller:'MyController', action:'downloadFile') } target=\"_blank\" ", 
     data: {'names':JSON.stringify(names)}, 
     dataType: 'json' 
}); 

上述代碼向您的控制器提交請求。關鍵點在這裏; 它不會刷新您的頁面或將任何數據放在您的頁面上。它只在JavaScript中向您返回數據。

根據您的$ .ajax()函數dataType參數,您是控制器甚至沒有返回正確的響應。 dataType屬性告訴$ .ajax()函數需要哪種數據作爲響應。

jQuery $.ajax() docco

如果你需要渲染HTML作爲你的Ajax請求的響應,最簡單的方法是使用$.load()功能。

還有其他一些方法,但爲了保持簡單的東西,我不會在這裏進入它們。不過,雖然不是很粗魯,但我已經閱讀了其他一些問題。你真的需要更好地理解你使用的工具。

+0

謝謝!對Web開發不熟悉,並且很快就被拋入其中並仍在學習。感謝您花時間寫出詳細的個人答案。 – Badmiral