前几天做的项目中,页面显示中文的时候出现了乱码,各种方法都试了一遍都不行(页面的字符编码改变,传到后台时进行转码以及更改tomcat的配置文件等等都不行),最后发现了一个问题就是用ajax往后台传递数据的时候post和get方式用混了,导致传递的数据有问题;
之前的代码:
function saveUserModConfig(configData) { /* alert("saveUserModConfig"); configData['name']=$("#modName").val(); console.log(configData); */ return $.ajax({ type: 'POST', url: 'saveSetPortalConfig.action?name=$("#modName").val()', dataType: 'json', cache: false, data: configData, traditional: true }); }
后来发现用post方式传递的时候不能用?的形式来传递,否则会导致产生乱码;
更改之后:
function saveUserModConfig(configData) { alert("saveUserModConfig"); configData['name']=$("#modName").val(); console.log(configData); return $.ajax({ type: 'POST', url: 'saveSetPortalConfig.action', dataType: 'json', cache: false, data: configData, traditional: true }); }更改之后再进行测试,发现并没有出现乱码
现在总结一下post和get2种方式的区别以及各自的优缺点
1、 关于ajax中post和get2种类型的传递方式:
Get:
优点:简单方便,可以直接在url后面加上?name=xxx&passwors=xxx来进行传递
扫描二维码关注公众号,回复:
1683089 查看本文章
缺点:会造成一些信息的泄露;传递的数据量有限制
Post:
优点:通过隐藏参数的方式进行传递;传递的数据量无限制
缺点:url书写复杂,需要写变量才能进行准确传递
Eg:
$.ajax({
type: 'POST', --说明传递的方式
url: 'saveSetPortalConfig.action',--要传递到的路径
dataType: 'json',--传递数据时,数据在传输过程中采用的方式
cache: false,
data: configData,--要传递的数据
traditional: true
});