【发布时间】:2014-04-24 21:05:31
【问题描述】:
我在创建和编辑视图的 部分放置了一些有效的 JS 代码,它运行良好。
但是,当我尝试将代码移动到单独的 JS 文件时,代码将不再调用控制器操作。
这里是JS代码:
<g:javascript>
$(document).ready(function(){
<g:remoteFunction controller="project" action="ajaxGetClient" onSuccess="updateClient(data)"/>
});
function updateClient(data){
var element = $("#project\\.client");
element.empty();
element.val(data.name);
}
</g:javascript>
这是控制器动作:
def ajaxGetClient = {
if(!params.id){
params.id = Project.find("FROM Project ORDER BY id").id
}
def projectInstance = Project.get(params.id)
render projectInstance?.client as JSON
}
这是 GSP 代码:
<g:textField name="project.client" id="project.client" maxlength="9" required="" disabled=""/>
<g:select id="project" name="project.id" from="${myPackage.Project.list()}" optionKey="id" required="" value="${productInstance?.project?.id}" class="many-to-one"
onchange="${
remoteFunction(
controller: 'project',
action: 'ajaxGetClient',
onSuccess: 'updateClient(data)',
params: '\'id=\' + this.value'
)}"
/>
我给ApplicationResources.groovy添加了一个资源,把上面的JS代码改成这样:
<g:javascript library="updateclient"/>
我只是简单地将代码复制/粘贴到一个 JS 文件中,然后收到一条消息:
Uncaught SyntaxError: Unexpected token
我的理解是因为它无法识别 GSP 语法,所以我尝试了一些 AJAX,我对此非常缺乏经验:
$(document).ready(function(){
$.ajax({
type: 'POST',
url: "${remoteFunction(controller:'project', action:'ajaxGetClient', onSuccess:'updateClient(data)')}"
});
});
这是我从浏览器控制台获得的信息:
http://localhost:8080/MyApp/product/$%7BremoteFunction(controller:'project',%20action:'ajaxGetClient',%20onSuccess:'updateClient(data)')%7D 404 (Not Found)
坦率地说,我现在很茫然。任何帮助将不胜感激。
【问题讨论】:
标签: javascript jquery ajax grails