Tuesday, December 23, 2008

IE6/IE7上ajax请求的一个bug

UTF-8编码的页面,在IE6/IE7中用ajax方式和普通直接访问方式请求此url,结果是不一样的:
http://localhost/test.php?q=测试中文

ajax: http://localhost/test.php?q=测试中文
服务器端收到的请求,其中的中文参数是以ISO-8859-1编码的(浏览器的默认编码方式),所以服务器端收到的参数其实是乱码的,所以ajax请求URL中的参数一定要经过encode,除了ie之外,其他浏览器测试下来都会自动url encode其中的参数。

非ajax: http://localhost/test.php?q=%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87
服务器端收到正常的UTF-8编码后的参数。

No comments :