如何在GSP页面中以json的形式捕获从控制器呈现的值

时间:2015-03-02 11:47:50

标签: grails

我想从成功函数的gsp页面中捕获从控制器checkWord()呈现的值。我不知道该怎么做。我的代码如下

<script>

   function callAjax(){
       var text= $('#word').val()

       console.log(text);
    $.ajax({

        url:"checkWord",
        type:"post",
        // dataType:'json',
        data:{text: text},

        success:function(){

            alert()
        }

    });
       console.log(data + "hello")
   }
</script>

行动

def checkWord(){
      def temp=params.text
      def query=Dictionary.findAllByWordLike(temp+'%');
      render query as JSON
}

1 个答案:

答案 0 :(得分:0)

由于您正在使用gsp作为视图,我会让grails remoteFunction来管理Ajax调用。

首先,控制器应该具有“withFormat”闭包,因此他知道如何根据被调用的方式呈现数据(以后可以以不同的方式调用它)

def checkWord(){
      def temp=params.text
      def query=Dictionary.findAllByWordLike(temp+'%');
      withFormat {
            json {  
                render query as JSON
            }
      }
}

然后从您的gsp中通过名称checkWord.json并使用remoteFunction调用控制器操作

我把你的JQuery #word搜索作为一个参数。

function callAjax(){
    ${remoteFunction(action: 'checkWord.json',
                   onSuccess: 'onSuccessFunction(data)',
                   params:'{text: \$(\'#word\').val()}' 
                  )
   }
}

然后你需要一个脚本函数,当ajax调用成功时它将被调用

   function onSuccessFunction(data){
        alert(data);
        //console.log(data + "hello")
    }

这应该有效。 (至少在我喜欢的方式) 希望它有所帮助。