所以我需要将 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/