2012-02-22 53 views
0

我有我的GSP页面下面的代码Ajax调用Grails中不工作

$j(document).ready(function() { 
     $j("#searchButton").click(function(event){ 

      var form = $j('#federatedSearchForm'); 
      $j.ajax({ 
         type:'POST', 
         url:'/tabulae/federatedSearch/ajaxGetSearchResults', 
         data:form.serialize(), 
         cache:false, 
         error:function(request,status,error) { 
          alert(status) 
         }, 
         success:function(data,status,xhr) { 
          alert(data); 
         }, 
         complete:function(xhr,status) { 
         } 

       }); 

      }); 
    }); 

我在我的控制器中的folllowing代码

高清ajaxGetSearchResults = {

log.debug "params:" + params 

    def returnResults = federatedSearchService.search(params) 


    render returnResults as JSON 

}

我看到的是,在控制器完成请求之前。成功方法在客户端被调用。有什么我做错了或错误吗?

+0

请求是否达到控制器方法? 另外,响应的内容是什么? – GreyBeardedGeek 2012-02-22 15:34:43

+0

是的。甚至在控制器可以返回数据并因此数据进入空白状态之前,成功警报就会被触发。当我在控制器中记录数据时,我确实看到有数据,似乎对服务的调用是异步的。 – allthenutsandbolts 2012-02-22 15:40:23

回答

1

从你的点击处理程序返回false之前将阻止浏览器的默认行为(可能是表单提交):

$j(document).ready(function() { 
    $j("#searchButton").click(function(event){ 
     ... 

     return false; 
    }); 
});