ajax解析Java傳來的json文字中反斜槓(\)問題
阿新 • • 發佈:2019-01-04
問題:
前臺傳來的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~');
}
);