说说contentType和ajax传值转义那些事

做一个项目,测试得时候发现密码是字符数字组成得,ajax传值得时候没事,但如果出现特殊字符#&之类得,就不能正常使用了,查了资料有如下发现。

1.JQ得contentType默认是application/x-www-form-urlencoded,这种方式数据格式得特点name=value中间用&链接,

例如http://localhost:5000/restful/mysqlmeta?host=a&user=a&passwd=%23aa%23a&database=ded&port=3306;

这种方式传输一些简单得数据没有问题如果传输一些复杂得json嵌套关系比较多得

例如{"step_id":"","filter_id":"","result_id":"","filter_name":[{"name":"序号","type":"1","value1":"<","value2":"10"},{"name":"用户ID","type":"1","value1":"<","value2":"10"}],"reportinfoid":"86","table_id":"13","table_name":"xlsx_czq_25_2"}

你传进去可以发现哦那个请求,但是服务端收到得数据为空了,因为ajax没有办法处理这个数据,这个问题浪费了很长时间,后台一直说收不到,我这边显示传过去了,大家多注意!!

后来发现我们把contentType类型变成application/json类型,这种类型是text,用JSON.stringfiy序列化以后发送,服务端用JSON.parse,序列化回去,完美解决问题!!

2.转义,如果用application/json这种方式传输,标准得json格式,不用考虑转义问题了,直接发送过去就可以使用,

但如果使用application/x-www-form-urlencoded又恰好要转义了怎么办呢?后来发现了一个神奇得玩意encodeURIComponent(),自动把特殊字符转移了!

大家去试试吧!

猜你喜欢

转载自www.cnblogs.com/yibadejiu/p/10183682.html