2015-04-21 49 views
0

我想實現一個簡單的jquery ajax調用。因爲參數傳遞給控制器​​,所以一切都看起來很好,但如果我想在完成所需操作後更新頁面上的某些元素,該函數總是返回一個錯誤,這個錯誤不好。我已經看到關於這個話題已經有幾個問題,但是迄今爲止他們中沒有一個對我有幫助。如果您在下面的代碼中發現錯誤,請幫助。 THXjQuery ajax函數總是返回一個錯誤

$(document).ready(function() { 

$('#link').click(function() { 
    $.ajax({ 
     url: "http://localhost:8085/KPIAdmin/kpis/get", 
     type: "GET", 
     data: { 
      param1: "value1", 
      param2: "value2" 
     }, 
     success: function() { 
      alert("Success!"); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      console.log(jqXHR); 
      console.log(textStatus); 
      console.log(errorThrown); 
     }, 
    }); 
}); 

}); 

在服務器端

@RequestMapping(value="/get", method=RequestMethod.GET) 
public void ajaxGetKPI(@RequestParam("param1") String param1, @RequestParam("param2") String param2) { 

    System.out.println("param1: " + param1); 
    System.out.println("param2: " + param2); 
} 

錯誤日誌

Object { readyState: 4, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 11 weitere… } ajaxGetKPI.js:24 
"error" ajaxGetKPI.js:25 
"Not Found" 
+0

我已經加入'數據類型: 'json'下面輸入'GET''但是不幸的是它沒有解決我的問題 – amsalk

+1

我認爲問題是服務器/服務,而不是Ajax請求。你有沒有試過在瀏覽器中做GET? – Andrew

+0

你是對的!問題出在服務器端。 'ajaxGetKPI()'方法必須返回一些或更精確的網頁的字符串名稱,這些網頁將由視圖解析器呈現,因爲它不返回任何數據或json。只要我添加'返回「重定向:/ kpis」;'一切都很好。 dataType:'json'在ajax調用中不是必需的。 – amsalk

回答

1

如果一個控制器聲明void返回類型,Spring將推斷視圖名稱。在你的情況下,它會搜索視圖名稱get,因此Not found error

您可以@ResponseBody註釋你的控制器比響應將身體內歸還,但因爲身體將是空的一個更好的選擇是retrun一個ResponseEntity

@RequestMapping(value="/get", method=RequestMethod.GET) 
public ResponseEntity<String> void ajaxGetKPI(@RequestParam("param1") String param1, @RequestParam("param2") String param2) { 
    System.out.println("param1: " + param1); 
    System.out.println("param2: " + param2); 
    new ResponseEntity<String>("OK",HttpStatus.NO_CONTENT); 
} 
+0

正是!只要我在瀏覽器中執行GET,我已經注意到了。 Thx – amsalk

+0

很好,np,很高興你解決了 –

相關問題