jQuery ajax调用包含重音字符的url将坏的Uri从IE发送到服务器
我在使用IE发送包含重音字符的url时遇到了问题。 这是一个简单的function:
function runjQueryTest(){ var url = "/test/Beyoncé/"; $.get( url, function(){}); }
在服务器(PHP)上,我记录了请求uri的值($_SERVER["REQUEST_URI"])
,我发现FF / Chrome发送的内容与IE发送的内容之间存在差异。
Chrome和FireFox会导致($_SERVER["REQUEST_URI"])
的值
/测试/碧昂斯%C3%A9 /
但IE 8的请求显示($_SERVER["REQUEST_URI"])
的值
/测试/碧昂斯\ xe9
这导致我的调度程序的正则表达式处理程序在服务器上无法正确匹配。
任何想法这里的根本问题是什么,以及如何为IE修复它?
谢谢!
我认为你的问题的解决方案是在你的url中使用它们之前对字符进行url编码。 这将为您提供所有浏览器的通用基础。
无需下载任何扩展到jquery或使用任何服务器端代码,根据w3 ,您可以:
function runjQueryTest(){ var url = encodeURI("/test/Beyoncé/"); $.get( url, function(){}); }
只需在字符串上调用urldecode 🙂
= urldecode("/test/Beyonc\xe9");?> /test/Beyoncé
我认为你需要手动URLEncode字符串。 试试这个简短的扩展: http : //plugins.jquery.com/project/URLEncode
用法:
alert( $.URLEncode("This is a \"test\"; or (if you like) an example...");
产量
This%20is%20a%20%22test%22%3B%20or%20%28if%20you%20like%29%20an%20example...