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?
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);
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.