2015-10-13 71 views
0

我正在使用ajax向控制器發送Json對象。ajax json未將值傳遞給彈簧控制器

$.ajax({ 
     url: "/cart/add.json", 
     type: "POST", 
     data:{ 'json': event.data},   

    }); 

和控制器

@RequestMapping(value = "/cart/add.json", method = RequestMethod.POST) 
public String addToCartJson(@RequestParam("json") final String jsonString, final Model model, 
     final BindingResult bindingErrors) 

我得到400錯誤的請求。

Error: "HTTP Status 400 - Required String parameter 'json' is not present"

任何輸入? 謝謝,提前

回答

2

服務器端想要字符串參數但客戶端發送到對象。 JSON.stringfy將用於將對象轉換爲字符串。要綁定json,您需要創建一個包含所有參數的類並使用@RequestBody註釋而不是@RequestParam。

的Ajax方法重寫:

$.ajax({ 
     url: "/cart/add.json", 
     type: "POST", 
     processData: false, 
      data: JSON.stringify({ 
       "json": event.data 
     }), 

控制器動作部分:

@RequestMapping(value = "/cart/add", method = RequestMethod.POST) 
    public void addEvent(@RequestBody EventData eventData){ 
    } 
1

你沒有通過參數json,你可以嘗試下面;

$.ajax({ 
      url: "/cart/add.json", 
      type: "POST", 
      data:{ 'json=':event.data} 
     }); 
+0

我得到未捕獲的語法錯誤:我已經編輯了答案意外令牌+ – sree

+0

可以請你現在就來試試。 – NightsWatch