ajax发布json数据的新行

时间:2015-02-11 17:03:49

标签: ajax json post newline

我有一个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");
}

没有帮助。我很遗憾地找出了这个问题的原因。

2 个答案:

答案 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

构建JSON
       data:JSON.stringify({id: $('#idAttribute').val()?$('#idAttribute').val():null, 
            repId:$('#repId').val(),
            scheduleDate: $('#scheduleDate').val(),
            scheduleTime: $('#scheduleTime').val(),
            message: $('textarea#message').val()
       }),