XMLHttpRequest responseType = "json", дающий ошибку SYNTAX_ERR: исключение DOM 12
У меня возникли проблемы с настройкой типа ответа XHR на "json". Он отлично работает, если я оставил ему пустую строку xml.responseType = "";
, но когда я установил ее в "json", я получаю сообщение об ошибке консоли SYNTAX_ERR: DOM Exception 12.
Файл .js:
var xml = new XMLHttpRequest();
xml.open("GET", "test.php", true);
xml.responseType = "json";
xml.send();
Файл .php:
<?php
$foo = "{\"key1\":\"val1\", \"key2\":\"val2\"}";
echo $foo;
?>
Не уверен, что происходит. Любые идеи?
Ответы
Ответ 1
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);
Ответ 2
Тип ответа JSON не реализован в WebKit.
http://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/8107e50e4207eb5a/a5d2c31247feae56?lnk=raot
Обновление 2016-01-03:
Как и следовало ожидать, WebKit реализовала эту функцию тем временем.