有没有办法从 javascript 函数调用控制器操作
Is there a way to call a controller action from a javascript function?
我有一个圣杯项目,我需要选择要删除的字段,当我单击删除时,我需要一个函数来删除所有选定的项目:
网页代码:
<form name="bookForm" action="list" method="post">
....
<a onclick="deleteBooks();">Delete</a>
....
....
<g:checkBox id="select_all" name="select_all" value="" onclick="selectAll();" />
....
<g:each in="${bookList}" status="i" var="bookInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:checkBox id="${bookInstance.id}" name="delete_checkbox" value="" /></td>
</tr>
</g:each>
....
</form>
JavaScript代码:
<script type="text/javascript">
function selectAll(){
var select = document.getElementById("select_all");
var checkboxes = document.forms['bookForm'].elements['delete_checkbox'];
if (select.checked){
for (i = 0; i < checkboxes.length; i++) checkboxes[i].checked = true;
}else{
for (i = 0; i < checkboxes.length; i++) checkboxes[i].checked = false;
}
}
function deleteBooks(){
var checkboxes = document.forms['bookForm'].elements['delete_checkbox'];
var counter = 0;
for (i = 0; i < checkboxes.length; i++){
if(checkboxes[i].checked){
counter ++;
${g.remoteFunction(action:'delete', controller:'book', id:checkboxes[i].id) }
}
}
if (counter == 0) alert("select books to delete");
}
</script>
selectAll 函数工作正常,但删除书籍函数在添加时会导致此错误 ${g.remoteFunction(action:'delete', controller:'book', id:checkboxes[i].id) }
例外:
Error 500: Error evaluating expression [g.remoteFunction(action:'delete', controller:'book', id: checkboxes[i].id)] on line [26]: Cannot get property 'null' on null object
Servlet: grails
URI: /myProject/grails/book/list.dispatch
Exception Message: Cannot get property 'null' on null object
Caused by: Error evaluating expression [g.remoteFunction(action:'delete', controller:'book', id: checkboxes[i].id)] on line [26]: Cannot get property 'null' on null object
Class: list.gsp
At Line: [26]
Code Snippet:
如果我用${g.remoteFunction(action:'delete', controller:'book') }
代替它
例外:
Error 500: Error evaluating expression [g.remoteFunction(action:'delete', controller:'book')] on line [27]: No javascript provider is configured
Servlet: grails
URI: /myProject/grails/book/list.dispatch
Exception Message: No javascript provider is configured
Caused by: Error evaluating expression [g.remoteFunction(action:'delete', controller:'book')] on line [27]: No javascript provider is configured
Class: list.gsp
At Line: [27]
Code Snippet:
如何从 javascript 函数或 jquery 调用控制器操作?
function deleteBooks(){
var checkboxes = document.forms['bookForm'].elements['delete_checkbox'];
var counter = 0;
for (i = 0; i < checkboxes.length; i++){
if(checkboxes[i].checked){
counter ++;
var bookId = checkboxes[i].id;
<g:remoteFunction controller="book" action="delete" id="${bookId}" />
}
}
if (counter == 0) alert("select books to delete");
}
如果有任何错误,请通知我
GSP 在服务器端工作,JavaScript 在客户端工作。你不能混合它,使用ajax:
$.ajax({
type: 'POST',
url: "${createLink(action:'delete', controller:'book')}/" + checkboxes[i].id
});
remoteFunction
很好,但是你需要有一个JavaScript库。查看 http://grails.org/plugin/jquery 以及如何安装它。
如果你内联编写javascript,你可以这样做。但是,如果javascript位于您要包含的文件中 - 它将不起作用。此外,您不需要远程函数中的"g."。
相关文章:
- 从全局函数调用Ember控制器上的方法
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- AngularJS:如何调用指令中定义的函数'控制器的作用域
- 有没有办法从 javascript 函数调用控制器操作
- Angularjs:路由后如何调用控制器函数
- Angularjs指令调用控制器函数
- 如何在angular js中从指令调用控制器函数
- Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数
- 如何使用ajax从javascript调用控制器函数
- 从AngularJS中的视图调用控制器函数
- 从指令角度调用控制器函数
- 从指令调用控制器函数(使用从指令传递的参数)
- 从 Karma 和 Jasmine 测试调用控制器函数
- 从Sench Touch 2中的视图调用控制器javascript函数
- 如何从Javascript函数调用控制器方法
- 如何修复角度 js ng 控制器函数调用
- 从函数调用控制器并向其传递 URL 编码参数
- 从链接函数调用控制器函数
- 从Javascript函数调用控制器方法
- 从嵌套指令中的链接函数调用控制器函数