【问题标题】:Jquery Ajax send contentType application/json and java get nullJquery Ajax 发送 contentType application/json 和 java get null
【发布时间】:2014-05-15 16:21:03
【问题描述】:

当我从 ajax jquery 发送一个带有“contentType”属性的 Json 对象时,这种情况的后端是 java ,找不到 json 元素或请求为空

这是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);

}

【问题讨论】:

  • 拼写检查? :) “应用程序/json”和“应用程序/json”。
  • 你不需要mimeType,并确保你的dataJSON.stringify包裹,因为服务器需要一个JSON 字符串

标签: java javascript jquery ajax json


【解决方案1】:

如果您将数据对象的 dataType 设置为 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);
    });

【讨论】:

    【解决方案2】:

    你应该在 data 属性中放置一个普通的对象或字符串。见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);
                }
            }); 
    

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      相关资源
      最近更新 更多