在公司的一次任务中遇到,前端界面要传递html文本到后端。但是ajax再此方面略有欠缺,楼主用一个取巧的方法解决了问题,以此记录一下。
问题:
- ajax传递html文本到后台失效
- javascript 处理 textarea中显示html文本
解决方案:
- 将html文本改变为普通文本
- 后端将普通文本转化回html文本
实现方案:
- 前端实现
/**
* 将 <、>等符号替换为html转义字符,如有别的字符,可自行添加
*/
function ajax_encode(str) {
str = str.replace("<", "<");
str = str.replace(">", ">");
return str;
}
将html通过ajax_encode转换后,然后经encodeURI(),传递到后端,post方法另行操作,将参数通过ajax传递到后端
$.ajax({
type: "GET",
url: "requesturi?data="+encode_data,
dataType: "json",
success: function (response) {
}
});
- 后端php实现方案
php的GET请求和POST请求会自动把参数反编译 ,所以这里不做处理
$params = $_GET;
$data = htmlspecialchars_decode($params['data']);
echo $data;
科普
htmlspecialchars_decode
为php将html文本转义字符转化为html符号
htmlspecialchars
将php将html特殊字符转为 html转义字符