1

我有一个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);
 }

当我点击提交按钮时,我想去那个 url 操作

<button class="submit_small" onClick="GetSelectedItem();">
    <span><g:message code="default.button.submit.label" /></span>
</button>

${createLink}是行不通的。

4

6 回答 6

3

一种不需要 JavaScript 代码在您的 GSP 中的更好方法如下:

<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;
}
于 2013-09-12T14:47:05.397 回答
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);
}
于 2013-09-12T11:18:29.277 回答
1

我认为您有服务器端/客户端问题。createLink 运行在服务端,JS 运行在客户端...

尝试:

var url = '${createLink(controller:'country', action: 'wholeTestUnits')}' + strSel ;
于 2013-09-12T09:48:21.917 回答
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
于 2017-03-01T07:34:07.297 回答
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();
      }
于 2018-03-26T06:00:05.273 回答
0

试试这个: var url = "${createLink(controller:'country', action: 'wholeTestUnits', params:[id: strSel], absolute: true)}"

于 2019-06-18T03:30:04.737 回答