Запрос 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 ответа:
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 тем временем реализовал эту функцию.