我想在 JavaScript 中使用 XMLHttpRequest 来发布一个包含文件类型输入元素的表单,这样我就可以避免页面刷新并返回有用的 XML。
我可以在不刷新页面的情况下提交表单,使用 JavaScript 将表单上的目标属性设置为 MSIE 的 iframe 或 Mozilla 的对象,但这有两个问题。小问题是目标不符合 W3C(这就是我在 JavaScript 中设置它的原因,而不是在 XHTML 中)。主要问题是 onload 事件不会触发,至少在 OS X Leopard 上的 Mozilla 上不会。此外,XMLHttpRequest 将使响应代码更漂亮,因为返回的数据可以是 XML,而不是像 iframe 那样仅限于 XHTML。
提交表单会产生如下所示的 HTTP:
Content-Type: multipart/form-data;boundary=<boundary string>
Content-Length: <length>
--<boundary string>
Content-Disposition: form-data, name="<input element name>"
<input element value>
--<boundary string>
Content-Disposition: form-data, name=<input element name>"; filename="<input element value>"
Content-Type: application/octet-stream
<element body>
如何让 XMLHttpRequest 对象的 send 方法复制上述 HTTP 流?