10

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

4

7 回答 7

4

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

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

二进制文件不依赖于 ajax,而是依赖于 javascript。有一些奇怪的字符串编码可以在 javascript 中传递字节数据(尤其是图像),但这不是一个通用的解决方案。

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

于 2009-05-17T11:43:11.620 回答
2

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

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

于 2009-05-17T12:02:22.103 回答
1

您可以传输任何类型的数据,无论是字符串还是字节

于 2009-05-17T11:40:28.913 回答
1

您可以发送任何您喜欢的东西,问题可能是收到后如何处理;)

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

于 2009-05-17T11:41:26.087 回答
1

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

顺便说一句,我从来没有见过一个应用程序可以发送二进制数据。

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

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

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

于 2009-05-17T12:56:36.560 回答
0

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

于 2009-05-17T11:43:22.680 回答
0

有一个名为DUI.Stream 和 MXHR的Digg 博客条目展示了他们所谓的“Multipart XMLHttpRequests”。现在是 alpha 代码,但是有一个处理图像的演示

于 2009-05-17T12:42:02.213 回答