2012-02-22 51 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; 
    }); 
});