remoteFunction回调不起作用,不调用js函数

时间:2012-08-27 00:40:08

标签: grails

我有一个带有onchange事件的g:select,它触发一个正在调用请求方法的remoteFunction,但是,回调JS函数没有被调用。

这是g:select:

<g:select id="categories"
          name="categories"
          from="${Category.findAll('from Category where master is null')}"
          noSelection="['':'- Selecione -']" optionKey="id" optionValue="description"
          onchange="${remoteFunction(
                  controller: 'event',
                  action: 'subCategoriesJSON',
                  params:'\'id=\' + escape(this.value)',
                  onSuccess: 'updateSubs(data,textStatus)'
          )}"
/>

也会调用 subCategoriesJSON ,但在 updateSubs 函数之后无法进行remoteFunction调用。我的页面正在头标记上正确呈现函数的范围。

这是功能:

<script type="text/javascript">
    $(document).ready(function() {
        function updateSubs(data, textStatus) {
            alert('call me!!!');
            var subs = eval("(" + e.responseText + ")");

            if (subs) {
                $("span#saida").html(subs);
            }
        }
    });
</script>

任何线索都将非常受欢迎。非常感谢!

1 个答案:

答案 0 :(得分:2)

看起来updateSubs被定义为本地函数,这意味着它无法从全局范围访问。基本上将updateSubs函数移出$(document).ready() - 它不需要真正存在,因为在定义该函数之前,代码不需要等到dom准备就绪。

这应该可以解决您的主要问题,但是当您无法访问名为e.responseText的变量时,您将不得不进一步编辑代码{ - 1}} - this只会错误发送错误直到修复。我现在已经对问题代码进行了评论。

无论如何,一旦e在全局范围内,updateSubs处理程序就应该能够访问它。

onSuccess

有关功能范围的更多信息,请阅读Nested functions and closures