jQuery.param () – ne sérialise pas les objects Date javascript?

jQuery.param({foo: 1}); // => "foo=1" - SUCCESS! jQuery.param({bar: new Date()}); // => "" - OUCH! 

Il n’ya aucun problème avec encodeURIComponent (new Date ()), ce que j’aurais pensé que param appelait pour chaque membre.

En outre, l’utilisation explicite de parameters “traditionnels” (par exemple, jQuery.param (xxx, true)) sérialise la date, mais hélas, cela ne m’aide pas beaucoup car ma structure de données n’est pas plate.

Est-ce parce que typeof (Date) == “object” et que param essaye d’y descendre pour trouver des valeurs scalaires?

Comment peut-on sérialiser sérieusement un object contenant la date dans $ .post (), etc.?

Vous allez probablement vouloir que la date soit transformée en une chaîne, car c’est ce que cela va devoir être sur le fil de toute façon.

 $.param({bar: new Date().toSsortingng()}); 

Maintenant, vous voudrez peut-être le formater d’une manière particulière pour que votre serveur obtienne quelque chose qu’il puisse parsingr. Je pense que la bibliothèque de datejs prend en charge le formatage. Vous pouvez également choisir le votre en sélectionnant des éléments de la date avec getDate() , getMonth() , getYear() etc.

Si vous travaillez avec des produits Microsoft côté serveur, vous devez prendre en compte le fait que Microsoft sérialise Date sous forme de nombre de millisecondes depuis l’heure UTC, donc sous forme de nombre. Pour être plus précis, la chaîne de sérialisation ressemble à /Date(utcDate)/ , où utcDate date est ce nombre. Étant donné que JSON prend en charge la barre oblique inversée en tant que caractère d’échappement, vous devez utiliser le code suivant pour sérialiser un object Date myDate :

 "\/Date(" + Date.UTC(myDate.getUTCFullYear(), myDate.getUTCMonth(), myDate.getUTCDate(), myDate.getUTCHours(), myDate.getUTCMinutes(), myDate.getUTCSeconds(), myDate.getUTCMilliseconds()) + ")\/" 

Je pense que c’est un bogue jQuery dans le contexte suivant:

  • jQuery 1.4.2 (1.3.2 fonctionne)
  • nouvelles méthodes ajoutées dans Date.prototype