XMLHttpRequest responseType = "json" donnant la syntaxe D'erreur ERR: DOM Exception 12

J'ai du mal à définir le XHR responseType sur "json". Cela fonctionne bien si je laisse une chaîne vide xml.responseType = ""; mais quand je la mets à "json", je reçois le message D'erreur de la console SYNTAX_ERR: DOM Exception 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;
?>

Je ne sais pas ce qui se passe.. Des idées?

22
demandé sur alnafie 2012-03-23 23:30:23

2 réponses

responseType propriété pour XMLHttpRequest objet est ajouté dans sa nouvelle variante XMLHttpRequest Niveau 2 et qui est inclus dans HTML 5, Je ne suis pas sûr que tous les navigateurs prennent en charge cette méthode donc il pourrait être possible que vous utilisez 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);
26
répondu Saket Patel 2013-08-12 09:08:33

Le JSON responseType 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
répondu Peter Aron Zentai 2016-01-03 17:41:14