你可以使用XML和XMLHttpRequest旁边的其他格式吗?

时间:2010-07-14 13:40:51

标签: javascript json xml-serialization

我理解在Javascript中可以使用JSON代替XMLHttpRequest,但是我可以发出请求并获取完全随意的数据吗?

喜欢自定义文字还是二进制格式?

或者界面是否仅限于jSON和XML?

我希望我能完成我在这里的想法...

a)如何在没有XML或JSON的情况下创建普通请求?

b)如何以纯字符串而不是对象的形式访问结果(答案)?

5 个答案:

答案 0 :(得分:4)

是的,只需设置内容类型:

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

答案 1 :(得分:2)

您可以使用任何基于文本的格式:XML,JSON,CSV或text/plain

如果您尝试使用二进制格式,我不确定会发生什么。

答案 2 :(得分:2)

您可以将结果恢复为

  • 使用responseXML属性或
  • 的DOM文档(如果收到XML)
  • 使用responseText属性的字符串(无论格式如何)

如果它是JSON,某些浏览器也可以将其作为对象返回。

以字符串形式取回任何内容的功能允许您自己解析任何格式。

答案 3 :(得分:1)

您可以在send()之前将内容类型明确设置为纯文本:

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

答案 4 :(得分:1)

除了提及setRequestHeader方法的帖子之外:似乎xmlhttprequest API的w3规范仅对header(即第一个参数)施加(建议)限制但不适用于value(即第二个参数)。

以下是规范的链接:http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method

AFAIC,这意味着就所请求的转移而言,任何数据类型都是有效的。但这并不会扩展到返回的数据,因为只指定了text和xml。

我可能错了。