Можете ли вы использовать другие форматы помимо XML с XMLHttpRequest? - PullRequest
2 голосов
/ 14 июля 2010

Я понимаю, что JSON можно использовать вместо XMLHttpRequest в Javascript, но могу ли я отправлять запросы и получать произвольные данные обратно?

Как пользовательский текстовый или двоичный формат?

Или этоинтерфейс ограничен jSON и XML?

Надеюсь, я справлюсь с тем, что мне здесь интересно ...

a) Как создать простой запрос без XML или JSON?

б) Как получить доступ к результату (ответу) в виде простой строки, а не объекта?

Ответы [ 5 ]

4 голосов
/ 14 июля 2010

Да, просто установите тип контента:

var request = new XMLHttpRequest();
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); // whatever character set you need.
request.open("GET", "yourtext.txt", true);
request.onreadystatechange = function() {
 if(this.readyState == 2) {
  alert(request.responseText);
 }
}
request.send();
2 голосов
/ 14 июля 2010

Вы можете получить результат обратно как

  • Документ DOM (если получен XML) с использованием свойства responseXML или
  • Строка (независимо от формата) с использованием responseTextсвойство

Некоторые браузеры также могут возвращать его как объект, если это был JSON.

Возможность получить что-либо в виде строки позволяет самостоятельно проанализировать любой формат.

2 голосов
/ 14 июля 2010

Вы можете использовать любой текстовый формат: XML, JSON, CSV или просто text/plain.

Я не уверен, что произойдет, если вы попытаетесь использовать двоичный формат.

1 голос
/ 14 июля 2010

В дополнение к публикациям, в которых упоминается метод setRequestHeader: похоже, что спецификации w3 для xmlhttprequest API накладывают (предполагаемые) ограничения только для header (т.е. первый аргумент), но не для value (т.е. второй аргумент).

Вот ссылка на спецификацию: http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method.

AFAIC, это означает, что любой тип данных действителен, насколько запрошенный переводобеспокоен.Однако это не распространяется на возвращаемые данные, так как указаны только текст и xml.

Возможно, я ошибаюсь.

1 голос
/ 14 июля 2010

Вы можете явно установить тип содержимого в виде обычного текста перед send ():

var request = new XMLHttpRequest();
request.open("POST", "/test.php");
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
request.send(message);
...