2011-09-20 79 views
2

我想發送一個JSON數據到我的控制器的POST處理程序。我這樣做,在我的客戶端:發送JSON數據到服務器錯誤

var userName = $('#userName').val(); 
var password = $('#password').val(); 
var mail = $('#mail').val(); 
var admin =$("#admin").is(':checked'); 
var user = {userName: userName, password: password, mail: mail, admin:admin}; 

$.ajax({ 
    async : false, 
    type:'POST', 
    url: '/uxiy/webapp/uxmer', 
    data: user, 
    dataType: 'json', 
    success: function(data) { 
     ... 
    }, 
    error: function(data) { 
     ... 
    } 
}); 

我的春天控制器如下:

@RequestMapping(method = RequestMethod.POST) 
public void createUser(HttpServletResponse response, @RequestBody User user) { 
    user.setName("POST worked"); 
    //todo If error occurs response.sendError(HttpServletResponse.SC_NOT_FOUND); 
    response.setStatus(HttpServletResponse.SC_OK); 
} 

然而,當我把我的數據我得到這個錯誤在螢火蟲:

"NetworkError: 415 Unsupported Media Type"

是什麼錯誤?

PS: 的螢火蟲POST細節的例子:

Parameters application/x-www-form-urlencoded 
admin true 
mail [email protected] 
password r 
userName userx 
Source 
userName=userx&password=r&mail=user%40user.com&admin=true 

PS2:當我加入

contentType: 'application/json', 

它開始給

"NetworkError: 400 Bad Request" 

可能是什麼問題,使序列化等?

PS3: 這裏:http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/它說:

If there are validation errors, a HTTP 400 is returned with the error messages, otherwise a HTTP 200 is returned.

我有400錯誤的請求錯誤。也許問題與此有關?

+0

我跳這個職位將會使畫面清晰: http://stackoverflow.com/q/5908466/225396 –

回答

4

問題是關於JSON陣列。這不是從客戶端發送到服務器的有效JSON字符串。


編輯

爲了澄清這一點,我偶然發現了這個帖子。需要在Ajax請求中執行適當的JSON.stringify(data)。這很奇怪,但是在設置相應的dataType時,不能通過.ajax函數完成。

$.ajax({ 
    async : false, 
    type:'POST', 
    url: '/uxiy/webapp/uxmer', 
    data: JSON.stringify(user), 
    dataType: 'json', 
    success: function(data) { 
     ... 
    }, 
    error: function(data) { 
     ... 
    } 
}); 
1

將內容類型來application/json或傑克遜不會踢英寸

$.ajax({ 
    async : false, 
    type:'POST', 
    contentType: 'application/json', 
    url: '/uxiy/webapp/uxmer', 
    data: user, 
    dataType: 'json', 
    success: function(data) { 
     ... 
    }, 
    error: function(data) { 
     ... 
    } 
}); 
+0

錯誤現在已更改。它是:「NetworkError:400 Bad Request」 – kamaci

+0

我有序列化的問題嗎? – kamaci