我在Grails中有以下JavaScript函数:
function requestPost() {
var projectNameFilter = $("input[name='project-name-filter']").val();
var addressFilter = $("input[name='address-filter']").val();
$.post(
'${createLink(controller: "listing", action: "transactions")}',
{
projectNameFilter: eval(projectNameFilter),
addressFilter: eval(addressFilter),
listingType: "${params?.listingType}",
propertyType: "${params?.propertyType}",
},
function (data, status) {
$('#dynamic-table').html(data);
}
);
}
请注意两个参数:
我在这个方法中有很多这些参数,所有这些都应该传递给控制器。
现在我的问题是:尽管反复进行这样的整个过程,我怎么能一次性通过所有这些参数。
答案 0 :(得分:1)
由于你的目标是使用javascript传递所有参数,渲染的html需要显式包含所有参数。因此,不存在内置解决方案(如果您不想使用会话并且不愿意使用已弃用的remoteFunction
标记)。一种解决方法是迭代所有参数并插入它们。请注意,这可能是一个安全问题:
$.post('${createLink(controller: "listing", action: "transactions")}',
{
<g:each in="${params}" var="paramKeyValue">
'${paramKeyValue.key}': '${paramKeyValue.value}',
</g:each>
},...)
我建议做这样的事情:
<g:each in="${['listType', 'propertyType']}" var="paramKey">
'${paramKey}': '${params."${paramKey}"}',
</g:each>
你也可以这样做:
${params.subMap(['listType', 'propertyType']) as JSON}