我想在JavaScript中使用XMLHttpRequest来提交一个包含文件类型输入元素的表单,以避免页面刷新并获得有用的XML返回。
我可以使用JavaScript将表单的目标属性设置为MSIE的iframe或Mozilla的object,以实现无需页面刷新的提交,但这有两个问题。其一是目标属性不符合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流?