javascript - 将 javascript 变量传递给 grails params

标签 javascript grails

所以我需要将 javascript 变量传递到 grails 参数中来构建和下载文件。所以最初用ajax来做这件事只是为了了解ajax不做下载。最初是这样工作的:

<script type="text/javascript" charset="utf-8">
    function myFunction() {

        jQuery.ajax({
            url: "Search/download",
            type: "POST",
            data: {facets: visualSearch.searchQuery.facets()}
        });
    }
</script>
<input type="button" onclick="myFunction()" value="download">

虽然这正确地通过了映射,但没有进行下载。

所以现在我想用 g:link 做类似的事情

<g:link controller="Search" action="test" params="[facets: '\$(visualSearch.searchQuery.facets())']" >TEST GRAILS</g:link>

但是我在 Controller 的参数中得到的只是

facets=$(visualSearch.searchQuery.facets())
action=test
controller=search

如何修复此问题以将方面(无论是已解析还是未解析)传递到 Controller 中。谢谢!

最佳答案

params 中添加 JavaScript 变量将不起作用。 g:link 在服务器端执行,并且不知道您的 JavaScript 值。您可以删除此params,而是在链接的“onclick”事件上添加代码,以在参数中设置 JavaScript 值。

类似于: 在 gsp 页面中,

<g:link name="searchLink" controller="Search" action="test">TEST GRAILS</g:link>

然后在 javascript 中(在同一页面中),

$(function() {
  $('a[name="searchLink"]').bind('click', function() {
    $(this).attr('href', $(this).attr('href') + '?facets=' + visualSearch.searchQuery.facets());
  })
})

基本上,您使用 Grails 生成超链接,然后使用 JQuery 将带有参数的查询字符串附加到该 href

希望有帮助。

关于javascript - 将 javascript 变量传递给 grails params,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18319246/

相关文章:

grails - 在 Grails 1.3.7 中使用 Geb、Selenium 和 Spock 进行功能测试时出错

javascript - Jquery 附加来自 LaravelBalde 的内容

c# - Curl - 获取包含图像和 css 的页面

grails - 如何让 Grails 导出插件与条件查询一起正常工作?

grails - 大气 meteor 和 meteor 一样吗

grails - 使用 set 在 Amazon EC2 上运行 grails 应用程序

javascript - 如何从vue js中的数组访问嵌套对象属性

javascript - 使用 jquery ui 自动完成在 MVC 中搜索 JSON 输出

php - 如果输入设置为使用 PHP 检查,jQuery 应该调用一些函数

java - 使用java异常进行条件检查