我有一个ajax帖子
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: 'POST',
url: '${contextPath}/sms/schedule',
data: '{"id":'+ ($('#idAttribute').val()?$('#idAttribute').val():null)
+ ',"repId":' + $('#repId').val() + ',"scheduleDate":"'
+ $('#scheduleDate').val()+ '","scheduleTime":"'
+ $('#scheduleTime').val() + '","message":"'
+ $('textarea#message').val() + '"}',
success: function (data) {
$('#schedule-sms-modal').modal('hide');
window.location.replace("${contextPath}/sms/list");
},
error : function(jqXHR, textStatus, errorThrown){
}
});
文本区#message
包含新行。因此Java后端无法解析请求并提供400错误请求。
我尝试了JSON.stringify($('textarea#message').val())
,并且还使用以下功能替换了新行。
var removeEscapeCharacters = function(myJSONString){
myJSONString.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
}
没有帮助。我很遗憾地找出了这个问题的原因。
答案 0 :(得分:2)
我认为您真正想做的是先stringify()
您的对象,然后将其作为data
参数传递。
var data = {
id: ($('#idAttribute').val() ? $('#idAttribute').val() : null),
repId: $('#repId').val(),
scheduleDate: $('#scheduleDate').val(),
scheduleTime: $('#scheduleTime').val(),
message: $('textarea#message').val()
};
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: 'POST',
url: '${contextPath}/sms/schedule',
data: JSON.stringify(data),
success: function (data) {
$('#schedule-sms-modal').modal('hide');
window.location.replace("${contextPath}/sms/list");
},
error : function(jqXHR, textStatus, errorThrown){}
});
答案 1 :(得分:1)
不要手动使用JSON.stringify
data:JSON.stringify({id: $('#idAttribute').val()?$('#idAttribute').val():null,
repId:$('#repId').val(),
scheduleDate: $('#scheduleDate').val(),
scheduleTime: $('#scheduleTime').val(),
message: $('textarea#message').val()
}),