当前位置: 首页 > 面试题库 >

XMLHttpRequest POST multipart / form-data

杨波娃
2023-03-14
问题内容

我想在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流?


问题答案:

您可以自己构造“ multipart / form-
data”请求(有关更多信息,请访问http://www.faqs.org/rfcs/rfc2388.html),然后使用该send方法(即xhr.send(your-
multipart -form-data))。同样,但更容易,在Firefox 4+(在Chrome 5+和Safari
5+)中,您可以使用FormData接口来帮助构造此类请求。该send方法适用于文本内容,但如果要发送二进制数据(例如图像),则可以借助sendAsBinary从Firefox
3.0开始的方法来实现。有关如何通过发送文件的详细信息XMLHttpRequest,请参阅http://blog.igstan.ro/2009/01/pure-
javascript-file-upload.html。



 类似资料:
  • 描述 (Description) Framework7几乎没有什么有用的方法,这使得使用表单变得容易。 下表显示了Framework7中使用的表单数据方法 - S.No 方法和描述 1 表格到JSON 您可以使用formToJSON()方法将所有表单字段值转换为JSON。 2 来自JSON的表格 您可以使用formFromJSON方法根据JSON数据填充表单。

  • 1.7.0 新增 从 1.8.0 开始支持blur 时才触发校验以及 debounce,同 Validator 一样也开始支持异步校验。 表单,包含各种输入组件以及对应的校验;我们可以通过数据驱动的方式来生成完成表单。 示例 默认配置使用 一个完整的包含所有的内置表单相关组件。 <cube-form :model="model" :schema="schema" :immediate-

  • 此方法返回'NUMERIC FORM'的当前设置,该设置用于在系统上进行数学计算。 语法 (Syntax) FORM() 参数 (Parameters) 没有 返回值 (Return Value) 此方法返回'NUMERIC FORM'的当前设置,该设置用于在系统上进行数学计算。 例子 (Example) /* Main program */ say FORM() 当我们运行上述程序时,

  • 在大多数Web应用程序中,表单是从用户获取信息的最重要的小部件,例如登录表单/反馈表单,以便可以将值保存在数据库中以供将来参考。 表单窗口小部件用于此目的。 在创建表单之前,我们应该了解xTypes。 xType定义Ext JS UI组件的类型,该组件在呈现组件期间确定。 例如,元素可以是我们将xType作为textField的文本框,或者元素只能具有我们具有Numeric xType的数值。 不

  • 介绍 (Introduction) Form容器允许您控制表单的布局,根据需要或可选标记表单字段,处理错误消息,以及将表单数据绑定到Flex数据模型以执行数据检查和验证。 它还允许您使用样式表来配置表单的外观。 Class 声明 (Class Declaration) 以下是spark.components.Form类的声明 - public class Form extends Cont

  • form 表单,将组件内的用户输入的 <switch/> <input/> <checkbox/> <slider/> <radio/> <picker/> 提交。 当点击 <form/> 表单中 formType 为 submit 的 <button/> 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。 属性名 类型 说明 report-subm

  • Form::open(array('url' => 'foo/bar', 'method' => 'PUT')); Form::open(array('route' => 'foo.bar')); Form::open(array('route' => array('foo.bar', $parameter))); Form::open(array('action' => 'FooControll

  • Form 来自于分享我们 iOS 上的应用和 Web 客户端之间逻辑关系的需求,我们发现 JSON 是实现这个的方法之一。 功能: 多个组:例如,您可以有一个组用于存储个人详细信息,而另一个可以用于装运信息 现场验证:我们支持required,max_length,min_length,min_value,max_value和format(正则表达式)。我们也支持多字段类型,如text,numbe