从 grails 中的 gsp 页面进行 ajax 调用

Posted

技术标签:

【中文标题】从 grails 中的 gsp 页面进行 ajax 调用【英文标题】:Make ajax call from gsp page in grails 【发布时间】:2013-12-11 03:30:54 【问题描述】:

我是 ajax 新手。我正在尝试从我的 gsp 页面向控制器操作发送请求。但我失败了。它没有调用控制器操作并且页面正在重新加载。任何人都可以看看这个并提供帮助。下面是我的查看页面>>>

    <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
  <title>Ajax First Example</title>
    <g:javascript plugin="jquery" library="jquery" src="jquery/jquery-1.7.2.js"/>
    <script>
        function callAjax()
            $.ajax(
                url: "returnMe",
                type:"post",
                dataType: 'json',
//            data:ids:JSON.stringify(idList), option:option, id:id
                success: function() 
                    alert(1)
                
            );
        
    </script>
</head>
<body>
<form name='myForm'>
    <input type="submit" value="Call Ajax Function" onclick="callAjax()">
</form>
</body>
</html>

这是我的控制器操作 >>>

def returnMe = 
    String msg = 'sdfsdf'
    render msg as JSON

【问题讨论】:

【参考方案1】:

你可以试试这个:

onclick="callAjax() return false;">

或者这个:

function callAjax(e) //<-------pass the event
        e.preventDefault(); // <-----add this to prevent the default behavior
        $.ajax(
           .....
        );

您按要求完成的 ajax 调用:

function callAjax()
        $.ajax(
            url: "returnMe",
            type:"post",
            dataType: 'json',
//          data:ids:JSON.stringify(idList), option:option, id:id
            success: function(data) 
                console.log(data); //<-----this logs the data in browser's console
            ,
            error: function(xhr)
                alert(xhr.responseText); //<----when no data alert the err msg
            
        );
    

【讨论】:

感谢您的帮助。第一个对我有用。但它并没有为成功发出警报。只有控制器的动作被调用。我现在应该做什么? 您可以尝试将错误函数添加到您的 ajax 中,并查看您的控制器是否正确生成 "json" 是的,我的 json 构建不正确。现在我已将其更改为 html。现在好了。但是你能给我一个完整的ajax调用结构的链接吗?谢谢。

以上是关于从 grails 中的 gsp 页面进行 ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

Grails 2.x-包括所有GSP文件中的Javascript / Jquery库

如何从 grails 默认 gsp 编码中排除插件?

如何从 grails 视图文件夹中的 create.gsp 表单中隐藏几个字段?

Grails 不会将变量传递给嵌套模板

在 Grails 中通过 AJAX 渲染模板

在 grails 控制器中识别 ajax 请求或浏览器请求