【问题标题】:Grails jQuery Ajax request - URL not workingGrails jQuery Ajax 请求 - URL 不起作用
【发布时间】:2012-11-06 12:25:32
【问题描述】:

我搜索了网络,也搜索了 stackoverflow,但我找不到任何关于此的提示...

我有一个 Grails 2.1.1 项目,我想通过 Ajax 请求从 jQuery 调用控制器函数。到目前为止,我想出了这个:

$.ajax({
    type: 'POST',
    url: "${createLink(controller:'userSearch',action:'ajaxFindUser')}",
    dataType: 'json',
    data: {
        lastname: $('#searchLastName').val(),
        firstname: $('#searchFirstName').val(),
        zipcode: $('#searchZipCode').val(),
        city: $('#searchCity').val()
    },
    success: function(data) {
        $('#searchSubContainerBody').html(data);

        $('#searchTable tr').draggable({
           cursor: 'move',
           helper: 'clone',
           scope: 'drag-guests',
            start: function(event, ui) {
              searchCloneTableRow.tr = this;
                searchCloneTableRow.helper = ui.helper;
                searchCloneTableRow.cells = new Array();
                $.each(this.cells, function(index, column) {
                    searchCloneTableRow.cells.push(column.innerText);
                });
            },
            connectWith: '#searchDetailContainerDropArea'
        });

        $('searchTable').dataTable({
            'bJQueryUI':true
        });

    },
    error: function(request, status, error) {
        $(errorDialog).html(error);
        $(errorDialog).dialog('open');
        return false;
    },
    complete: function() {
        //do something
    }
});

当我点击按钮触发 Ajax 请求时,DevTools 显示以下错误:

POST > http://localhost:8080/GrailsTest001/authentication/$%7Bg.createLink(controller:'userSearch',action:'ajaxFindUser')%7D 404 (Not Found) 

所以,如您所见,URL 获取的 HTML 编码...如何防止 Grails 对其进行编码?

Config.groovy 中,编解码器设置为none

// The default codec used to encode data with ${}
grails.views.default.codec = "none" // none, html, base64

我在这里做错了什么?你能给我任何提示(或更好的:解决方案)吗?非常感谢任何帮助!

【问题讨论】:

    标签: jquery html ajax grails


    【解决方案1】:

    普惠制sn-p

     ${createLink(controller:'userSearch',action:'ajaxFindUser')}
    

    没有得到解释 - 这是在 javascript 文件中还是在实际 GSP 中?看起来它是在 javascript 文件中定义的。如果是这样,它将不起作用,您需要在 GSP 页面上创建一个 javascript var,然后从您的 ajax 调用中引用该 javascript var。例如:

    在您的 GSP 代码中:

    <g:javascript>
      var ajaxAction = "${createLink(controller:'userSearch',action:'ajaxFindUser')}"
    </g:javascript>
    

    在包含 ajax 代码的 javascript 文件中:

    $.ajax({
        type: 'POST',
        url: ajaxAction,
        dataType: 'json',
        data: {
      ...
    

    【讨论】:

    • 是的,链接的定义是在 JavaScript 文件中进行的,因为这是我在网上搜索解决方案时看到的最多的内容(?)非常感谢您的帮助 -我会尝试并立即回复;)
    • 我试着像你说的那样实现它,并在 标记中定义了变量,但我无法访问我的 @ 中的 gsp 中定义的变量987654326@ 文件,因为它得到一个'变量未定义'异常(我在声明ajaxAction 之后导入js 文件)......另外,我想知道为什么这似乎对其他人有用:stackoverflow.com/questions/10431049/… do你有什么线索吗?
    • 您应该在浏览器上执行“查看源代码”并验证变量是否:1)已定义和 2)在 ajax 调用之前已定义。另一个问题中的示例(以及您的原始问题)可能已在 GSP 页面中定义
    • 啊-是的,谢谢-这就是这里发生的事情...对不起。现在可以使用了!
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    相关资源
    最近更新 更多