Grails jQuery Ajax请求 - URL无法正常工作

时间:2012-11-06 12:25:32

标签: jquery html ajax grails

我搜索了网络,也在stackoverflow,但我找不到任何暗示......

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

$.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 get的HTML编码...如何防止Grails编码呢?

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

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

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

1 个答案:

答案 0 :(得分:4)

GSP代码段

 ${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: {
  ...