2011-08-28 32 views
3

是什麼導致了這個錯誤?我相信這是一個不正確的接受標題。當數據類型爲'json'時,jquery ajax方法不應該將它設置爲正確的值嗎?爲什麼我的jquery ajax給出了406

406不可接受

這裏是我的春天控制器映射:

@RequestMapping(value={"/{ID}"}, method=RequestMethod.GET) 
public @ResponseBody Double getRating(@PathVariable(value="ID") final Long id, 
     @RequestParam Long rating) { 
    Double ratingResult = rate.get_rating(id); 
    return ratingResult; 
} 

這裏是我的javascript:

$.ajax({ 
    type:'GET', 
    url: '/ratings/' + ID + '?rating=' + rating, 
    datatype: 'json', 
    success: function(data){ 
     var obj = jQuery.parseJSON(data); 
     var ratingResult = obj.ratingResult; 
    }); 

我接受頭值是*/*

+0

檢查你的資本 - 'dataType',不'datatype'。而且,通常情況下,jQuery使用'''application/json,text/javascript,*/*; q = 0.01'](https://github.com/jquery/jquery/blob/1.6.2/src/ajax.js#L324)用於JSON請求(至少在1.6.2中)。 –

回答

1

請驗證服務器端:

但是,如果你有不正確的響應內容類型,它應該是應用程序/ JSON,記住你需要添加傑克遜到您的/ lib目錄。

在您的serlvet-name.xml文件中。 如果您可以在控制檯中捕獲對象響應,請使用firebug查看json符號。

請覈實客戶端:

檢查你的請求頭:

... 
dataType: 'json', 
... 

接受/ 接受:應用/ JSON,文本/ JavaScript的,/; q = 0.01 這將明確告訴服務器端,您期待JSON。

而且...檢查:http://www.checkupdown.com/status/E406.html

0

你可以試試'text/json'...

+0

,這給了我相同的結果。 – coder

0

設置你dataTypejson,你不需要做$.parseJSON jQuery將解析爲您

$.ajax({ 
type:'GET', 
url: '/ratings/' + ID + '?rating=' + rating, 
dataType: 'json', 
success: function(data){ 

    var ratingResult = data.ratingResult; 
    //or sometimes you have to do data[0] 
    var ratingresult = data[0].ratingResult; 
}); 
相關問題