2014-11-06 27 views
0

這是一個簡單的形式,它需要2個日期,並且我submiiting那些值到服務器。ajax表單提交但調用錯誤函數

<form action="#" method="get"> 
<label for="from">From</label> 
<input type="text" id="from" name="fromDate"> 
<label for="to">to</label> 
<input type="text" id="to" name="toDate"> 

<input type="button" value="Recv Amount" id="recv"> 
</form> 

及以下是控制器代碼

@RequestMapping("getPayments") 
@ResponseBody 
public void getPayments(HttpServletRequest request,Model uiModel) 
{ 
    String toDate=request.getParameter("toDate"); 
    String fromDate=request.getParameter("fromDate"); 
    System.out.println(fromDate+" "+ toDate); 
} 

,這是js代碼

$('#recv').click(function(){ 
     var fromDate=$('#from').val(); 
     var toDate=$('#to').val(); 
     $.ajax({ 
      type: "GET", 
      url: url, 
       data:{"fromDate":fromDate,"toDate":toDate}, 
       dataType:"json", 

     success: function(data) { 
      console.log('success'); 


     }, 
     error:function() 
     { 
      console.log('failed'); 
     } 
     }); 
    }); 

當過我打的按鈕,我可以看到在服務器控制檯TODATE和日期(這意味着執行System.out.println(fromDate +「」+ toDate);但是在瀏覽器控制檯中打印失敗(這意味着執行console.log('failed');)

我在瀏覽器控制檯中沒有任何錯誤,但ajax的成功函數從未執行。

背後的原因是什麼?

jsfiddle

回答

1

您正在等待JSON答案,但您沒有返回任何內容。 jQuery會給你一個錯誤。從你的ajax請求中刪除'dataType'或者返回一個有效的json對象。

從jQuery文檔:

「JSON」:評估響應爲JSON,並返回一個JavaScript對象。 JSON數據嚴格分析;任何格式不正確的JSON都會被拒絕並引發解析錯誤。從jQuery 1.9開始,一個空的響應也被拒絕;服務器應該返回null或{}的響應。 (有關正確的JSON格式的詳細信息,請參閱json.org。)

jQuery ajax query

+0

是的,你是對的,當我嘗試你的方式然後它的工作。謝謝 – rocking 2014-11-06 13:05:04

1

編輯:

基於所提供的信息的問題是,數據有望形成你你的成功參數的方式。 由於沒有數據返回(void方法),它實際上不會做任何事情。

因此,你需要使用:

statusCode: { 200: function() { alert("success"); } } 

刪除成功和錯誤是成功將無法正常工作(返回無數據)和錯誤顯示(僅僅是因爲沒有返回數據),並與相關替代它們狀態碼。

+0

遺憾的錯誤類型,我做的GET方法在阿賈克斯,所以我不是在控制器方法= RequestMethod.Get wrting – rocking 2014-11-06 12:46:31

+0

所以只有它不顯示它在控制檯?你有沒有試過做過戒備(「成功」),看它是否取得成功? – Aeseir 2014-11-06 12:52:03

+0

是的,ajax中的成功函數永遠不會調用。我創建了另一種方法,另一種形式,另一個輸入字段並進行了測試。但仍然相同 – rocking 2014-11-06 12:53:22