关于web项目中中文乱码问题

前几天做的项目中,页面显示中文的时候出现了乱码,各种方法都试了一遍都不行(页面的字符编码改变,传到后台时进行转码以及更改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来进行传递

缺点:会造成一些信息的泄露;传递的数据量有限制

Post:

优点:通过隐藏参数的方式进行传递;传递的数据量无限制

缺点:url书写复杂,需要写变量才能进行准确传递

Eg:

 $.ajax({

               type: 'POST',  --说明传递的方式

               url: 'saveSetPortalConfig.action',--要传递到的路径

               dataType: 'json',--传递数据时,数据在传输过程中采用的方式

               cache: false,

               data: configData,--要传递的数据

 traditional: true

           });

你可能感兴趣的:(关于web项目中中文乱码问题)