我有这个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]
}
它打印出MY ID Is Lines,但它不会呈现downloadFile View,这是:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title></title>
</head>
<body>
test
</body>
</html>
然而,它没有呈现它。我怎样才能解决这个问题?谢谢。
答案 0 :(得分: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()函数期望什么样的数据作为响应。
如果您需要将HTML呈现为对ajax请求的响应,最简单的方法是使用$.load()函数。
还有其他一些方法,但为了让事情变得简单,我不会在这里讨论它们。说真的,不要试图粗鲁,但我已经读过你的其他一些问题了。您真的需要更好地了解您正在使用的工具。