因此,我正在使用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中对其进行了调试。
答案 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);
}
});