web-dev-qa-db-fra.com

XMLHttpRequest responseType = "json" donnant l'erreur SYNTAX_ERR: exception DOM 12

J'ai du mal à définir le type de réponse XHR sur "json". Cela fonctionne bien si je lui laisse une chaîne vide xml.responseType = ""; mais lorsque je le définis sur "json", j'obtiens le message d'erreur de la console SYNTAX_ERR: exception DOM 12.

Le fichier .js:

var xml = new XMLHttpRequest();
xml.open("GET", "test.php", true);
xml.responseType = "json";
xml.send();

Le fichier .php:

<?php
$foo = "{\"key1\":\"val1\", \"key2\":\"val2\"}";
echo $foo;
?>

Vous ne savez pas ce qui se passe .. Des idées?

22
alnafie

responseType propriété pour XMLHttpRequest objet est ajoutée dans sa nouvelle variante XMLHttpRequest Level 2 et qui est incluse dans HTML 5, je ne suis pas sûr que tous les navigateurs prennent en charge cette méthode, il est donc possible que vous utilisiez un navigateur qui n'implémente pas cette méthode

au lieu d'utiliser responseType, vous pouvez utiliser le code suivant pour obtenir les données au format souhaité

 var xml = new XMLHttpRequest();
 xml.open("GET", "test.php", true);

 xml.onreadystatechange = function() {
   if (xml.readyState != 4)  { return; }

   var serverResponse = JSON.parse(xml.responseText);
 };

 xml.send(null);
29
Saket Patel

Le type de réponse JSON n'est pas implémenté dans le WebKit. http://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/8107e50e4207eb5a/a5d2c31247feae56?lnk=raot

Mise à jour 2016-01-03: Comme on pouvait s'y attendre, WebKit a implémenté cette fonctionnalité entre-temps.

8
Peter Aron Zentai