Jquery Ajax发送contentType application / json和java get null

时间:2014-05-15 16:21:03

标签: java javascript jquery ajax json

当我从ajax jquery发送一个带有“contentType”属性的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);
            }
        }); 

这是我的控制器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);

}

2 个答案:

答案 0 :(得分:2)

你有一个拼写错误,如果你将dataType设置为json,你的数据对象应该是一个JSON对象,因此在证明者周围有引号。

此代码应该有效:

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);
    });

答案 1 :(得分:0)

您应该在数据属性中放置一个普通对象或字符串。请参阅http://api.jquery.com/jquery.getjson/

var urlInsert = '/SAF/ajax/supplier/insert';
        console.log(rfc);
        $.ajax({
            type : 'POST',
            url : urlInsert,
            data: 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);
            }
        });