ajax调用链接到新页面而不返回新页面

时间:2013-01-22 20:21:49

标签: ajax grails

我有这个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>

然而,它没有呈现它。我怎样才能解决这个问题?谢谢。

1 个答案:

答案 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()函数期望什么样的数据作为响应。

jQuery $.ajax() docco

如果您需要将HTML呈现为对ajax请求的响应,最简单的方法是使用$.load()函数。

还有其他一些方法,但为了让事情变得简单,我不会在这里讨论它们。说真的,不要试图粗鲁,但我已经读过你的其他一些问题了。您真的需要更好地了解您正在使用的工具。