Impossible de transmettre la valeur null au serveur à l'aide de jQuery AJAX. La valeur reçue sur le serveur est la chaîne "null"

Je suis de la conversion d'un javascript/php/ajax application à utiliser jQuery pour assurer la compatibilité avec d'autres navigateurs que Firefox.

J'ai de la difficulté en passant la valeur true, false et null valeurs à l'aide de jQuery ajax fonction.

Code Javascript:

$.ajax
(
   {
      url     : <server_url>,
      dataType: 'json',
      type    : 'POST',
      success : receiveAjaxMessage,
      data:
      {
         valueTrue : true,
         valueFalse: false,
         valueNull : null
      }
   }
);

Code PHP:

var_dump($_POST);

Serveur de sortie:

array(3) {
  ["valueTrue"]=>
  string(4) "true"
  ["valueFalse"]=>
  string(5) "false"
  ["valueNull"]=>
  string(4) "null"
}

Le problème est que la valeur null, true et false valeurs sont converties en chaînes.

Le Javascript AJAX code actuellement en cours d'utilisation passe null, true et false correctement, mais ne fonctionne que sous Firefox.

Personne ne sait comment résoudre ce problème à l'aide de jQuery?


Voici du code de travail (pas à l'aide de jQuery) à comparer avec le non-travail code donné ci-dessus.

Code Javascript:

ajaxPort.send
(
   <server_url>,
   {
      valueTrue : true,
      valueFalse: false,
      valueNull : null
   }
);

Code PHP:

var_dump(json_decode(file_get_contents('php://input'), true));

Serveur de sortie:

array(3) {
  ["valueTrue"]=>
  bool(true)
  ["valueFalse"]=>
  bool(false)
  ["valueNull"]=>
  NULL
}

Remarque que la valeur null, true et false valeurs sont correctement reçues.

Note également que, dans la deuxième méthode, le $_POST tableau n'est pas utilisé dans le code PHP. Je pense que c'est la clé du problème, mais je ne peux pas trouver un moyen de reproduire ce comportement à l'aide de jQuery.


Cette section a été ajoutée après la réponse ci-dessous a été accepté.

Ici est une version corrigée du code original.

Code Javascript:

$.ajax
(
   {
      url     : <server_url>,
      dataType: 'json',
      type    : 'POST',
      success : receiveAjaxMessage,
      data    : JSON.stringify
      (
         {
            valueTrue : true,
            valueFalse: false,
            valueNull : null
         }
      )
   }
);

Code PHP:

var_dump(json_decode(file_get_contents('php://input'), true));

Serveur de sortie:

array(3) {
  ["valueTrue"]=>
  bool(true)
  ["valueFalse"]=>
  bool(false)
  ["valueNull"]=>
  NULL
}

source d'informationauteur Tom