post提交数据参数自动转码

正在做的一个项目需要富文本功能,提交的时候使用‘encodeURIComponent’方法做了转码,但是发送请求的时候浏览器会自动解码呢?

已经将<p>会议描述</p>转换成了%3Cp%3E%E4%BC%9A%E8%AE%AE%E6%8F%8F%E8%BF%B0%3C%2Fp%3E
图片描述

浏览器请求显示发送的还是<p>会议描述</p>
图片描述

请问为什么会自动转码呢?

更新

params.des=encodeURIComponent('<p>会议描述</p>');//值为%3Cp%3E%E4%BC%9A%E8%AE%AE%E6%8F%8F%E8%BF%B0%3C%2Fp%3E

向后台发送请求

//这个是我们自己封装的方法,使用的是nodejs,我看了下源码提交的时候里面没有编码的操作
BaseJs.ajaxV3Proxy(meetingTask.path+'url',params, function(json) {
    if(json == 'OK'){
        that.$Message.success('保存成功!');
        that.loading=false;
        that.$router.push({name:'meetList'});
    }
});

上面是比较简单的,可以保存成功,加上背景色就500错误了
比如:

<p><span style="color: rgb(230, 0, 0);">会议描述</span></p>
阅读 6.8k
3 个回答

因为默认的 content-type 是 application/x-www-form-urlencoded,浏览器会把你要 post 的内容转义。你可以换成别的类型,比如用 FormData 或者 application/jsontext/plain 之类的。

是不是参数传错了

"desc" : "<p><span style='color: rgb(230, 0, 0);'>会议描述</span></p>"
//这里style要用单引号
//或者
"desc" : '<p><span style="color: rgb(230, 0, 0);">会议描述</span></p>'

浏览器自动转码有没有影响富文本功能?

如果有的话
可以换一种思路,前端先把内容转成base64编码,然后发送给后端
后端可以直接存base64,这样的话,前端想要显示正常在进行base64解码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏