2009-10-20 6 views
2

J'avais des problèmes pour envoyer un caractère contenant des caractères d'accent en utilisant IE. Voici une fonction simple:jQuery Ajax appel à l'URL contenant le caractère accent envoie Uri mauvais de IE au serveur

function runjQueryTest(){ 
    var url = "/test/Beyoncé/"; 
    $.get(url, function(){}); 
} 

Sur le serveur (PHP) j'enregistre la valeur de la demande uri ($_SERVER["REQUEST_URI"]) et je vois une différence entre envoyer FF/Chrome jusqu'à ce que IE par rapport envoie vers le haut.

Chrome et FireFox provoquer la valeur de ($_SERVER["REQUEST_URI"]) être

/test/Beyonc% C3% A9/

mais les demandes de IE 8 montrent la valeur de ($_SERVER["REQUEST_URI"]) être

/test/Beyonc \ xe9

Cela provoque le gestionnaire d'expressions régulières de mon répartiteur de ne pas correspondre correctement sur le serveur.

Des idées ce que le problème de base est ici, et comment je peux le réparer pour IE?

Merci!

Répondre

4

Je pense que la solution à votre problème est url encoder les caractères avant de les utiliser dans votre URL. Cela vous donnera une base commune à travers tous les navigateurs.

0

Je pense que vous avez besoin d'URLEncode manuellement la chaîne. Essayez cette courte extension: http://plugins.jquery.com/project/URLEncode

Utilisation:

alert( $.URLEncode("This is a \"test\"; or (if you like) an example..."); 

Sortie

This%20is%20a%20%22test%22%3B%20or%20%28if%20you%20like%29%20an%20example... 
1

Il suffit d'appeler urldecode sur la chaîne :)

<?= urldecode("/test/Beyonc\xe9");?> 
/test/Beyoncé 
+0

'urldecode()' ne fonctionne pas pour '"/test/Beyonc% C3 % A9/"': http://sandbox.singpolyma.net/php/?php=%3C%3F%3D+urldecode%28%22test%2FBeyonc%25C3%25A9%2F%22%29%3B+%3F% 3E – jfs

+0

Vous pourriez vouloir reconsidérer votre bac à sable. Vous êtes ouvert pour une mauvaise attaque. http://sandbox.singpolyma.net/php/?php=%3C%3F%3D+phpinfo()%3B+%3F%3E –

2

sans télécharger l'extension à jquery ou utiliser un code côté serveur, selon w3, vous pouvez faire:

function runjQueryTest(){ 
    var url = encodeURI("/test/Beyoncé/"); 
    $.get(url, function(){}); 
} 
Questions connexes