1. 程式人生 > >ajax解析Java傳來的json文字中反斜槓(\)問題

ajax解析Java傳來的json文字中反斜槓(\)問題

問題:
前臺傳來的content內容包含\的時候, 例如 –> name : Tom, content : \
後臺組合成json字串 {“name” : “Tom”, “content” : “\”} 傳送給ajax,
ajax會出現json解析錯誤情況

處理方法:
必須對要傳送的字串屬性進行轉換 –> str.replaceAll(“\\\\”, “\\\\\\\\”)
args0 是4個反斜槓, args1是8個反斜槓

下面是例子(沒用json工具包)

Java程式碼:

/**
 * 接收引數, 交給業務層處理完, 返回json資訊, 便於ajax更新頁面
 */
@ResponseBody public String index(@RequestParam String name, @RequestParam String content) { Entity entity = new Entity(name, content); if (entityServiceImpl.add(entity)) { // 插入成功 StringBuilder sb = new StringBuilder(); sb.append("{\"name\" : \""); sb.append(entity.getName()); sb.append("\", \"content\" : \""
); sb.append(entity.getContent().replaceAll("\\\\", "\\\\\\\\")); sb.append("\"}"); return sb.toString(); } // 忽略其他程式碼 }

HTML程式碼:

<div id="formAera">
    <p>這裡是表單區域</p>
    <input type="text" id="name"/>
    <input type="text" id="content"
/>
<a href="javascript:void(0)" class="submit">提交</a> </div> <div id="displayAera"> <p>這裡顯示後臺返回的json資訊內容</p> </div>

JS程式碼:

$.ajax({
    type : 'POST',
    url : 'cm',
    data : {
        'name' : $('#name').val(),
        'content' : $('#content').val()
    },
    dataType : 'json',
    success : function(data, stats) {
        var newEnity = $('<p>' + data.name + '</p>' + '<p>' + data.content + '</p>');
        $('#displayArea').prepend(newEnity);
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('Wrong~');
    }
);