Запрос responseType = "JSON с" дает синтаксическую ошибку ошибка: исключение дом 12


У меня возникли проблемы с установкой типа ответа XHR на "json". Он прекрасно работает, если я оставляю его пустой строкой xml.responseType = "";, но когда я устанавливаю его в "json", я получаю сообщение об ошибке консоли SYNTAX_ERR: DOM Exception 12.

The .файл js:

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

The .php файл:

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

Не уверен, что происходит.. Есть идеи?

2 22

2 ответа:

responseType свойство для Объекта XMLHttpRequest добавляется в его новый вариант XMLHttpRequest Level 2 и который включен в HTML 5, я не уверен, что все браузеры поддерживают этот метод, поэтому вполне возможно, что вы используете браузер, который не реализует этот метод

Вместо использования responseType Вы можете использовать следующий код для получения данных в нужном формате

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

Тип ответа JSON не реализован в WebKit. http://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/8107e50e4207eb5a/a5d2c31247feae56?lnk=raot

Обновление 2016-01-03: Как и следовало ожидать, WebKit тем временем реализовал эту функцию.