Vous n'avez pas fourni suffisamment d'informations sur la façon dont vous utilisez la fonction d'envoi, mais je suppose que vous ne définissez pas le type mime pour spécifier que vous envoyez des données de formulaire.
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
les données envoyées sont dans ce cas codées comme on code une chaîne de requête
xhr.send("name=foo&value=bar");
sinon il ne sera pas interprété comme une donnée de formulaire par Developer Tools.
jquery fait la majorité du travail pour vous à cet égard.
Mise à jour : Pour répondre explicitement à la question de savoir quelle est la différence...
-
si une requête (typiquement POST) a Content-type
dont l'en-tête est réglé sur application/x-www-form-urlencoded
le corps doit être sous la forme d'une chaîne de requête standard avec un code url. clé =
valeur paires jointes par &
. Données du formulaire montre ensuite les paramètres clé-valeur (lorsqu'ils sont visualisés et analysés). Cette méthode était beaucoup plus courante dans le passé car elle est utilisée par défaut dans les formulaires HTML.
-
Les autres cas sont présentés dans Demande de charge utile (et aujourd'hui analysé pour la lisibilité également pour les formats courants comme JSON).