Ajax调用-响应始终为null

时间:2018-07-10 12:02:22

标签: ajax spring hibernate model-view-controller

因此,我正在使用Backbone和Spring。我想从Input字段发布数据,问题是我可以在chrome debug中看到数据,数据在那里,它不为null,但是当我在数据库中查看时,该字段为null以及在其中放置断点时eclipse请求在哪里,它为null。

Backbone,这里只看ajax代码,但它工作正常,我想否则我将无法在chrome调试中看到数据。

saveNewName : function(e) {
    var inputValue = $('#newConfigName').val();
    var settingId = $('#selectReportChannel').val();
    var data = {
            "inputValue" : inputValue,
            "settingId" : settingId,

    };

    $.ajax({
        type: "POST",
        url: "../customchannel",
        async: false,
        contentType: "application/json; charset=UTF-8",
        dataType: "json",
        data: JSON.stringify(data),
        success: function (data){
            $('.alertCustomChannel').show();
            setTimeout(function() {
                $("#alertID").hide();
            }, 2000);
        },
        error: function(){
            console.log('Failure in saving new Config Name!')
            $('.alertCustomChannel2').show();
            setTimeout(function() {
                $("#alertID2").hide();
            }, 2000);
        }
    });
    e.stopImmediatePropagation();
},

这是我的spring控制器代码,我搜索了整个google,使用了其他代码,使用了所有无效的东西,总是得到null。

@RequestMapping(value = "/customchannel", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody    
String saveNewConfigName(@RequestBody String newConfigName,HttpServletRequest request) {
    String configName = request.getParameter("inputValue");     
    System.out.println(request.getParameter("inputValue"));

    System.out.println(request.getSession().getAttribute("inputValue"));
    customchannelservice.saveNewConfigName(configName);
    Enumeration paramaterNames = request.getParameterNames();
    while(paramaterNames.hasMoreElements() ) {
           System.out.println(paramaterNames.nextElement());
    } 
    return "{\"success\": true}";
}

我认为HTML并不是那么重要,因为您可以看到我的Input字段具有ID #newConfigName等,并且值已移交给该变量,因为我在Chrome中对其进行了调试。

1 个答案:

答案 0 :(得分:1)

contentType: "application/json; charset=UTF-8"表示您想将参数作为JSON传递,因此在服务器端,您需要解析JSON对象。

如果要通过request.getParameter()获取参数,则需要删除此行。

$.ajax({
    type: "POST",
    url: "../customchannel",
    async: false,
    //contentType: "application/json; charset=UTF-8",//remove this line
    dataType: "json",
    data: data,//send the data parameter directly
    success: function (data){
        $('.alertCustomChannel').show();
        setTimeout(function() {
            $("#alertID").hide();
        }, 2000);
    },
    error: function(){
        console.log('Failure in saving new Config Name!')
        $('.alertCustomChannel2').show();
        setTimeout(function() {
            $("#alertID2").hide();
        }, 2000);
    }
});