jQuery.ajax({type:'POST'在grails中

时间:2014-02-04 07:41:03

标签: javascript jquery ajax grails

首先感谢大家的宝贵建议。我遇到了一个问题,就是在控制器上的grails远程函数调用中的jQuery ajax调用。
我项目中安装的插件是:jQueryUi - 1.10.3,jQuery - 1.11.0。

我的控制器这个方法:

def loadamount(){...} 

对于ajax调用方法:

def ajaxCallBalance(long id){
    def userBalances=loadamount(id)
    def userBalance=userBalances[0] //it returns in array
    return [usreBalance:userBalance]
}

这些只是我的数据库调用,用于在用户配置文件html页面内加载页面加载的a / c中加载用户数量。所以我用它:

第677点:

<g:if test="${session.LogedUser}">
<script>
    ${remoteFunction(
        controller:'user',
        action:'ajaxCallBalance',
        update:[success:'uresult',failure:'uresult'],
        id:session.LogedUser.id
    )}
</script>

在HTML中:

<li id="uresult"><!-- Want to see hare what result either value or error it returns --></li>

在firebug控制台中,我看到了这个错误:

  

SyntaxError:语法错误

<script>

jQuery.ajax({
   type:&#39;POST&#39;,

   url:&#39;/...../..../ajaxCallBalance/10000000&#39;,

   success:function(data,textStatus) {jQuery(&#39;#uresult&#39;).html(data);},

   error:function(XMLHttpRequest,textStatus,errorThrown) 

   jQuery(&#39;#uresult&#39;).html(XMLHttpRequest.responseText);

}

});

</script> 

[注意:这是由grails ajax插件生成的,我写的是第677点。]

这是我的问题:

  1. 为什么这个$#39;出现,即使我没有空格,也没有任何符号。这是一个错误还是我的错误?
  2. 有没有办法处理这种情况,因为用户onLoad/(document).ready()要求这样的条件。如果是,那么我会做什么?

1 个答案:

答案 0 :(得分:1)

你不能直接在js中使用${remoteFunction...}的grails结构。使用ajax:

$.ajax({
   type: 'POST',
   url: "${createLink(action:'ajaxCallBalance', controller:'user')}",
   data: { id: id },

  success: function (dataCheck) {
    //Do stuff
  }

  ........
});

或像这样使用g:remoteFunction

$('mydiv').onclick = <g:remoteFunction action="ajaxCallBalance" controller="user" id="${id}" />