ajax - 如何通过使用Grails 2.1.0中的AJAX从Grails Controller中获取数据来单击相同形式的搜索按钮时更新2个文本字段

标签 ajax grails

我有一个 Controller (SearchController),它通过单击搜索按钮(在myview.gsp内)获取数据,我想用我 Controller (SearchController)中的数据填充同一myview.gsp中存在的2个文本字段。需要做ajax调用,因为我只想填充2个字段并且不想重新加载包含其他有值(value)信息的页面。我如何实现它,请指导我

这是我的 Controller

def searchItem() {

    def itemFound = MyService.searchP20Code(params["item"])

    def resultMap = [:]
    if (itemFound!=null)

{



   resultMap.put("CODE",itemFound[1])
   resultMap.put("DESC",itemFound[2])

}


println "Result:"+resultMap



session.setAttribute("searchResult", resultMap)
render(view: myview" )


}

myview.gsp
          myview.gsp 


                   <div class="leftPanel filter-label">
                <a href="#" class="tt"> <g:message
                        code="Normal.label.Code" />

                </a>
            </div>
            <div class="rightPanel filter-field-wrapper">
                <input type="text"
                    name="Code" maxlength="30"
                     value=""
                     id="i_code" />
            </div>
        </div>

        <div class="formLables">

            <div class="leftPanel filter-label">
                <a href="#" class="tt"> <g:message
                        code="Normal.label.Description" />
                </a>
            </div>
            <div class="rightPanel filter-field-wrapper">
                <input type="text" 
                    name="Desc" maxlength="30"
                    onkeyup="fieldMaxlength(&#39;material_code&#39;)" value=""

                    id="i_description" />
            </div>
        </div>



                <g:actionSubmit 

                    value="${message(code:'Normal.button.search', default: 'Search Code')}"
                    action="searchItem" />

请帮助我如何使用ajax在myview.gsp onclicking搜索按钮上仅更新这两个文本字段。我正在使用grails 2.1.0

最佳答案

Here您可以找到带有Grails内置Ajax支持的详细示例。

您还可以使用JQuery(example here)

编辑:

您的 Controller 需要如下所示:

import grails.converters.JSON

class ExampleController {
    ....    

    def searchItem() {

        def itemFound = MyService.searchP20Code(params["item"])

        def resultMap = [:]
        if (itemFound!=null) {
            resultMap.put("CODE",itemFound[1])
            resultMap.put("DESC",itemFound[2])
        }


        println "Result:"+resultMap



        //session.setAttribute("searchResult", resultMap)
        render(resultMap as JSON )


    }
}

和你的gsp
<head>
...
    <g:javascript plugin="jquery" library="jquery" src="jquery/jquery-{WRITE_YOUR_VERSION_HERE}.js"/>
    <script>
        function callAjax(e){
            e.preventDefault();
            $.ajax({
                url: "example/search",
                type:"post",
                dataType: 'json',
                success: function(data) {
                    console.log(data);
                    $("input[name='Code']").val(data.CODE);
                    $("input[name='Desc']").val(data.DESC);
                }
            });
        }            
    </script>
...
</head>
<body>
....
    <input type="submit" value="Call Ajax Function" onclick="callAjax()">
....
</body>

关于ajax - 如何通过使用Grails 2.1.0中的AJAX从Grails Controller中获取数据来单击相同形式的搜索按钮时更新2个文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152807/

相关文章:

javascript - 如何使图标网页运行

PHP/AJAX 初学者需要帮助

javascript - 对 Django 的 Ajax 请求返回 404 not found

json - Grails-从请求参数返回选定的json元素

unit-testing - 模拟时,Grails单元测试通过引用不起作用

javascript - 搜索时如何查看数据而不提交| Angular js

c# - 无法在 Aspx 页面中从 Codebehind 运行 Javascript 代码

grails - 如何运行多个 Groovy/Grails 版本

DFC 的 Grails 多环境配置问题

unit-testing - 从 2.2.4 升级到 Grails 2.4.3 后,在单元测试期间,元类更改不会在测试之间重置