代码之家  ›  专栏  ›  技术社区  ›  Prof. Falken

除了XML和XMLHttpRequest,您还可以使用其他格式吗?

  •  2
  • Prof. Falken  · 技术社区  · 14 年前

    我知道JSON可以代替JavaScript中的XMLHttpRequest,但是我可以发出请求并得到完全任意的数据吗?

    像自定义文本或二进制格式?

    或者接口仅限于JSON和XML?

    我希望我能通过这里的奇迹…

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

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

    5 回复  |  直到 14 年前
        1
  •  4
  •   Andir    14 年前

    是,只需设置内容类型:

    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
  •  2
  •   dan04    14 年前

    您可以使用任何基于文本的格式:xml、json、csv或 text/plain .

    我不知道如果你尝试使用二进制格式会发生什么。

        3
  •  2
  •   thomasrutter    14 年前

    你可以把结果作为

    • 使用responseXML属性的DOM文档(如果收到XML),或者
    • 使用ResponseText属性的字符串(不考虑格式)

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

    以字符串形式返回任何内容的能力允许您自己分析任何格式。

        4
  •  1
  •   ttchong    14 年前

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

    var request = new XMLHttpRequest();
    request.open("POST", "/test.php");
    request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
    request.send(message);
    
        5
  •  1
  •   FK82    14 年前

    除了提到 setRequestHeader 方法:似乎是W3规范 xmlhttprequest API仅对 header (即第一个论点),但不适用于 value (即第二个论点)。

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

    AFAIC,这意味着就请求的传输而言,任何数据类型都是有效的。这不会扩展到返回的数据,但是只指定了文本和XML。

    不过,我可能错了。