AJAX可以传输哪些数据格式?

时间:2009-05-17 11:38:19

标签: ajax data-formats

我是AJAX的新手,但作为概述,我想知道您可以上传和下载哪些格式。它仅限于JSON或XML,还是甚至可以发送MP3或UTF-8 HTML等二进制类型。最后,你是否可以完全控制数据,字节为字节数组,或者只是发送/接收的字符串。

7 个答案:

答案 0 :(得分:4)

如果我们在讨论ajax,我们谈论的是javascript?关于XMLHTTPRequest?

XMLHttpRequest只是一个http请求可以传输所有内容。但是javascript中没有字节数组。只有字符串,数字等。你从ajax调用得到的每一件事都是一段文字(responseText)。这可能会被解析为XML(它为您提供reponseXML)。特殊编码应该更多地是http传输问题。

二进制内容不依赖于ajax,而是依赖于javascript。字符串有一些奇怪的编码在javascript中传递字节数据(特别是对于图像),但它不是一般的解决方案。

HTML不是问题,这是最突出的用例。从这种类型的请求中,您将获得一个HTML字符串,并将其添加到每个解析HTML的innerHTML的DOM中的某个节点。

答案 1 :(得分:2)

由于数据是通过HTTP传输的,因此您必须确保使用某种编码。其中最受欢迎的是base64编码。您可以在以下网址找到更多信息:http://www.webtoolkit.info/javascript-base64.html

该方法是对您要发送的数据进行base64编码,然后对服务器(或客户端)上的数据进行base64解码,并按预期使用原始数据。

答案 2 :(得分:1)

您可以传输任何类型的数据字符串或字节

答案 3 :(得分:1)

你可以发送任何你喜欢的东西,问题可能是如何处理它;)

标准HTML可能是最常用的ajax内容类型 - 您也可以选择字符编码,但最好始终坚持使用一种类型的编码。

答案 4 :(得分:1)

AJAX只是意味着您通过JavaScript调用在HTTP上异步传输数据。因此,您的脚本使用XmlHttpRequest()对象生成“正常”HTTP请求。但是,顾名思义,它实际上只适用于基于文本的数据格式,因为您通常希望在客户端使用从服务器返回的数据执行某些操作(但并非总是如此,有时人们只是将XmlHttpRequests发送给更新服务器上的内容。)

另一方面,我从未见过无论如何发送二进制数据的应用程序。

大多数情况下,人们选择使用POST或GET将数据发送到服务器(这基本上是一种传输HTTP固有的名称 - 值对的方法)。为了发送更复杂的数据,例如层次结构,需要以某种方式对它们进行编码。 XML文档可以通过JavaScript本地生成,发送到服务器并解析为所需的任何数据类型。但由于XML可能有点痛苦,因此许多开发人员使用JSON编码数据,因为它易于生成且易于解析。

服务器发回的内容同样是随意的。通常,您在Javascript中指定一个处理传入数据的回调函数。同样,流行的选择是XML和JSON,它们分别容易地解析为文档对象或数组结构。您也可以发送纯文本或其他包装,但请记住,您必须自己从中提取可用数据。有时,将实际的HTML片段发送到客户端以直接更新页面上的内容也是有益的。

对于初学者,我建议你看一下JQuery。它是一个非常轻量级的框架,它抽象了许多邪恶的兼容性东西,让你非常好地编写AJAX请求。

答案 5 :(得分:0)

您可以移动任何可以通过HTTP发送的内容。对从与加载的页面相同的域进行调用存在限制,但对传输的内容没有限制。您也可以执行GET或POST事务。

答案 6 :(得分:0)

标题为Digg the BlogDUI.Stream and MXHR条目展示了他们所谓的“Multipart XMLHttpRequests”。它现在是alpha代码,但有一个demo that handles images