我有一个javascript函数如下
function GetSelectedItem()
{
var e = document.getElementById("country");
var strSel = e.options[e.selectedIndex].value;
alert(strSel);
var url = "${createLink(controller:'country', action: 'wholeTestUnits', id: strSel)}"
alert(url);
}
当我点击
之类的提交按钮时,我想转到该网址操作<button class="submit_small" onClick="GetSelectedItem();">
<span><g:message code="default.button.submit.label" /></span>
</button>
此${createLink}
无效。
答案 0 :(得分:3)
更好的方法是在您的GSP中不需要JavaScript代码,如下所示:
<button class="submit_small" onClick="GetSelectedItem();" data-url="${createLink(controller:'country', action: 'wholeTestUnits')}">
<span><g:message code="default.button.submit.label" /></span>
</button>
function GetSelectedItem() {
var button = event.target;
var e = document.getElementById("country");
var strSel = e.options[e.selectedIndex].value;
var url = button.getAttribute("data-url") + "/" + strSel;
}
答案 1 :(得分:1)
我认为你有服务器端/客户端问题。 createLink在服务器上运行,JS在客户端上运行......
尝试:
var url = '${createLink(controller:'country', action: 'wholeTestUnits')}' + strSel ;
答案 2 :(得分:1)
正如我想的那样,你在链接中没有获得strSel的价值。 你可以试试这个。
function GetSelectedItem()
{
var e = document.getElementById("country");
var strSel = e.options[e.selectedIndex].value;
alert(strSel);
var url = "${grailsApplication.config.grails.serverURL}/country/wholeTestUnits/" + strSel
alert(url);
}
答案 3 :(得分:0)
您可以构建自己的URL并使用该URL,而不是使用createLink。但是,您必须注意控制器名称中的大写字母。
var url="${ createLink(controller:'testcontroller', action:'getData') }";
相当于
var url = "/testcontroller/getData;
如果你想将javascript中的参数传递给控制器,你可以这样做。
var url = "/testcontroller/getData?arg0=" + arg0 + "&arg1=" + arg1;
要在控制器中提取参数,请使用params关键字。 因此,要在控制器中打印参数,请执行以下操作:
println params.arg0
println params.arg1
答案 4 :(得分:0)
--in gsp file--
<a href="#" onclick="callAjax('${createLink(controller:'shift',action: 'addShift')}');" >Add/Edit Shift</a>
--in js file--
function callAjax(path){
//path->/shift/addShift
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("updateContent").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", path, true);
xmlhttp.send();
}
答案 5 :(得分:0)
尝试: var url =“ $ {createLink(controller:'country',action:'wholeTestUnits',params:[id:strSel],absolute:true)}}”