FormData

  • 版本網址代稱: DOM/XMLHttpRequest/FormData
  • 版本標題: FormData
  • 版本 ID: 342471
  • 建立日期:
  • 建立者: ziyunfei
  • Is current revision?
  • 回應

版本內容

XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.

想要更详细的了解如何使用FormData对象, 请查看使用FormData对象.

构造函数

new FormData ([in HTMLFormElement form])

参数

form
(可选) 一个HTML表单元素

方法概述

void append(in DOMString name, in {{ interface("nsIVariant") }} value);

方法

append()

给当前FormData对象添加一个键/值对.

void append(
  in DOMString name,
  in nsIVariant value
); 
参数
name
字段名称.
value
字段值.可以是一个{{ domxref("Blob") }}对象,一个{{ domxref("File") }}对象,或者一个字符串,如果全都不是,则该值会被自动转换成字符串.
备注

如果你将一个{{ domxref("Blob") }}对象作为字段值添加到了一个FormData对象中的话,则在使用Ajax将这个FormData对象提交到服务器上时,提交数据中代表对应文件的文件名的"Content-Disposition"字段的值在不同的浏览器中可能会不同.

浏览器兼容性

{{ CompatibilityTable() }}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 7+ {{ CompatGeckoDesktop("2.0") }} 10+ 12+ 5+
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 3.0 {{ CompatGeckoMobile("2.0") }} {{ CompatUnknown() }}

12+

{{ CompatUnknown() }}

Gecko备注

在Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4)之前,如果你将一个Blob对象作为字段值添加到一个FormData对象中,则在使用Ajax将这个FormData对象提交到服务器上时,提交数据中代表对应文件的文件名的"Content-Disposition"字段的值会是一个空字符串,这会引发服务器程序上的一些错误.从Gecko 7.0开始,发送的文件名改为"blob"这个字符串.

相关链接

版本來源

<p>XMLHttpRequest Level 2添加了一个新的接口<code>FormData</code>.利用<code>FormData对象</code>,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的<a href="/zh-CN/DOM/XMLHttpRequest#send()" title="zh-CN/XMLHttpRequest#send()"><code>send()</code></a>方法来异步的提交这个"表单".比起普通的ajax,使用<code>FormData</code>的最大优点就是我们可以异步上传一个二进制文件.</p>
<p>想要更详细的了解如何使用<code>FormData</code>对象, 请查看<a href="../../../../zh-cn/DOM/XMLHttpRequest/FormData/Using_FormData_Objects" title="zh-cn/DOM/XMLHttpRequest/FormData/Using_FormData_objects">使用FormData对象</a>.</p>
<h2 id="Syntax" name="Syntax">构造函数</h2>
<p><code>new FormData ([in </code><code>HTMLFormElement form</code><code>])</code></p>
<h3 id="Parameters" name="Parameters">参数</h3>
<dl>
  <dt>
   <code>form</code></dt>
  <dd>
    (可选) 一个HTML表单元素</dd>
</dl>
<h2 id="Method_overview" name="Method_overview">方法概述</h2>
<table class="standard-table">
  <tbody>
    <tr>
      <td><code>void <a href="/zh-CN/DOM/XMLHttpRequest/FormData#append()" title="zh-CN/DOM/XMLHttpRequest/FormData#append()">append</a>(in DOMString name, in {{ interface("nsIVariant") }} value);</code></td>
    </tr>
  </tbody>
</table>
<h2 id="Methods">方法</h2>
<h3 id="append()">append()</h3>
<p>给当前<code>FormData对象添加一个键/值对</code>.</p>
<pre>
void append(
  in DOMString name,
  in nsIVariant value
); 
</pre>
<h6 id="Parameters">参数</h6>
<dl>
  <dt>
    <code>name</code></dt>
  <dd>
    字段名称.</dd>
  <dt>
    <code>value</code></dt>
  <dd>
    字段值.可以是一个{{ domxref("Blob") }}对象,一个{{ domxref("File") }}对象,或者一个字符串,如果全都不是,则该值会被自动转换成字符串.</dd>
</dl>
<h6 id="Notes">备注</h6>
<p>如果你将一个{{ domxref("Blob") }}对象作为字段值添加到了<code>一个FormData</code>对象中的话,则在使用Ajax将这个<code>FormData</code>对象提交到服务器上时,提交数据中代表对应文件的文件名的"Content-Disposition"字段的值在不同的浏览器中可能会不同.</p>
<h2 id="Browser_compatibility">浏览器兼容性</h2>
<p>{{ CompatibilityTable() }}</p>
<div id="compat-desktop">
  <table class="compat-table">
    <tbody>
      <tr>
        <th>Feature</th>
        <th>Chrome</th>
        <th>Firefox (Gecko)</th>
        <th>Internet Explorer</th>
        <th>Opera</th>
        <th>Safari</th>
      </tr>
      <tr>
        <td>Basic support</td>
        <td>7+</td>
        <td>{{ CompatGeckoDesktop("2.0") }}</td>
        <td>10+</td>
        <td>12+</td>
        <td>5+</td>
      </tr>
    </tbody>
  </table>
</div>
<div id="compat-mobile">
  <table class="compat-table">
    <tbody>
      <tr>
        <th>Feature</th>
        <th>Android</th>
        <th>Firefox Mobile (Gecko)</th>
        <th>IE Mobile</th>
        <th>Opera Mobile</th>
        <th>Safari Mobile</th>
      </tr>
      <tr>
        <td>Basic support</td>
        <td>3.0</td>
        <td>{{ CompatGeckoMobile("2.0") }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>
          <p>12+</p>
        </td>
        <td>{{ CompatUnknown() }}</td>
      </tr>
    </tbody>
  </table>
</div>
<h3 id="Gecko_notes">Gecko备注</h3>
<p>在Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4)之前,如果你将一个<code><a class="new" href="../Blob">Blob</a></code>对象作为字段值添加到一个<code>FormData</code>对象中,则在使用Ajax将这个<code>FormData</code>对象提交到服务器上时,提交数据中代表对应文件的文件名的"Content-Disposition"字段的值会是一个空字符串,这会引发服务器程序上的一些错误.从Gecko 7.0开始,发送的文件名改为"blob"这个字符串.</p>

<h2 id="See_also">相关链接</h2>
<ul>
  <li><a href="/zh-CN/DOM/XMLHttpRequest" title="zh-CN/XMLHttpRequest">XMLHttpRequest</a></li>
  <li><a href="/zh-CN/DOM/XMLHttpRequest/Using_XMLHttpRequest" title="zh-CN/Using XMLHttpRequest">Using XMLHttpRequest</a></li>
  <li><a href="/zh-CN/DOM/XMLHttpRequest/FormData/Using_FormData_Objects" title="zh-CN/DOM/XMLHttpRequest/FormData/Using_FormData_objects">Using FormData objects</a></li>
  <li><a href="/zh-CN/HTML/Element/form" title="zh-CN/HTML/Element/form"><code>form</code></a></li>
  <li><a class="external" href="http://www.w3.org/TR/XMLHttpRequest2/#interface-formdata" title="http://www.w3.org/TR/XMLHttpRequest2/#interface-formdata"><code>W3C Specification</code></a></li>
</ul>
Revert to this revision