当我使用“contentType”属性从 ajax jquery 发送 Json 对象时,这种情况下的后端是 java,找不到 json 元素或请求为 null
这是JS
var urlInsert = '/SAF/ajax/supplier/insert';
console.log(rfc);
$.ajax({
type : 'POST',
url : urlInsert,
data:{
proveedor : jsonObj //jsonObj is a JSON.stringify()
},
dataType : "json",
contentType : "appliaction/json",
mimeType : "applicaction/json",
success : onInsert,
error : function(data, status, er) {
alert("Load Data: " + data + ", Estatus: " + status + ", Error: "
+ er);
}
});
这是我的 Controller JAVA中的方法
@RequestMapping(value="insert",method=RequestMethod.POST)
public void onInsert(HttpServletRequest request, HttpServletResponse response){
Gson gson = new Gson();
SafTcProveedor proveedor = gson.fromJson(request.getParameter("proveedor"), SafTcProveedor.class);
System.out.println(proveedor);
}
最佳答案
你有一个拼写错误,如果你将它的数据类型设置为 json,你的数据对象应该是一个 JSON 对象,因此 proveedor 周围的引号。
此代码应该可以工作:
var urlInsert = '/SAF/ajax/supplier/insert';
console.log(rfc);
$.ajax({
type : 'POST',
url : urlInsert,
data:{
"proveedor" : jsonObj //jsonObj is a JSON.stringify()
},
dataType : "json",
contentType : "application/json",
mimeType : "application/json",
success : onInsert,
error : function(data, status, er) {
alert("Load Data: " + data + ", Estatus: " + status + ", Error: "
+ er);
}
});
或者你可以使用 jQuery 的 post 函数:
$.post('/SAF/ajax/supplier/insert', {proveedor: jsonObj})
.done(onInsert)
.fail(function (jqXHR, textStatus, errorThrown) {
alert('error', errorThrown);
});
关于java - Jquery Ajax 发送 contentType application/json 和 java 获取 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683730/