Je suis en train de construire un serveur en Node.js qui reçoit des données de Javascript sur un site web. Les données sont envoyées en utilisant la méthode getJSON de jQuery, comme suit :
$.getJSON(
url,
{
id: track.id,
artist: track.artist,
title: track.title,
album: track.album,
filename: track.filename,
user: track.user,
userId: track.userId,
room: track.room,
timestamp: track.timestamp
}
);
J'essaie ensuite d'accéder aux données en utilisant le module url de Node comme ceci :
var urlObj = url.parse(request.url, true);
var jsonCallback = urlObj.query["callback"];
Cela fonctionne bien la plupart du temps, mais échoue lorsque l'un des paramètres contient une apostrophe. Il semble que l'analyse de la chaîne de requête s'arrête à l'apostrophe. Voici ce que console.log affiche pour deux objets de requête différents :
{ callback: 'jQuery15105242477038409561_1304925579219',
id: '6c91c74db064c93f1f020000',
artist: 'Radiohead',
title: 'Everything In Its Right Place',
album: 'Kid A',
filename: '01 Everything In Its Right Place.m4a',
user: 'Cowrelish',
userId: '82a89b4df7a9120305000000',
room: 'qwantz',
timestamp: '1304924972555',
_: '1304925611362' }
{ callback: 'jQuery15105242477038409561_1304925579221',
id: '798cc74dfcce4337f7010000',
artist: 'Toy Dolls',
title: 'The Final Countdown',
album: 'HOLY SHIT!!! IT' }
L'album pour le second est "HOLY SHIT !!! IT'S THE FINAL COUNTDOWN !", comme vous pouvez le voir, il a été tronqué à l'apostrophe.
J'ai essayé d'échapper l'apostrophe dans le code client, mais tout ce que j'obtiens est "album : 'HOLY SHIT !!! IT \\ '". Il échappe à la barre oblique, mais pas à l'apostrophe.
S'agit-il d'un bogue ou d'une caractéristique ? Devrais-je échapper les apostrophes d'une manière différente sur le client, ou chercher à corriger un bug dans Node.js ?