request1.5.1
request([options]) -> new Ajax.Request
这是一个便捷的方法,可将表单串行化并通过 Ajax.Request 提交到表单
action
属性指定的 URL。参数 options
会被传递到 Ajax.Request
实例。在 options
参数中,可重定义表单的 HTTP 发送方式(译注:指
get、post 等等)并指定附加的参数。
传递到 request()
的 options
参数会智能的与 Ajax.Request
选项 进行融合:
-
如果表单具有
method
属性,这个值将被用于Ajax.Request
的method
选项。如果options
参数中指定了method
选项,则优先使用参数中指定的值。 如果两者均未指定,method
的值默认为“POST”。 -
在参数
options
中通过属性parameters
指定的“键值”对(即一个 hash 列表或是一个查询字符串)将会被合并到已序列化的表单参数中(并且前者具有较高的优先级)。
样例
假设有如下的 HTML 表单:
<form id="person-example" method="POST" action="/user/info">
<fieldset>
<legend>User info</legend>
<div>
<label for="username">Username:</label>
<input type="text" name="username" id="username" value=""/>
</div>
<div>
<label for="age">Age:</label>
<input type="text" name="age" id="age" value="" size="3" />
</div>
<div>
<label for="hobbies">Your hobbies are:</label>
<select name="hobbies[]" id="hobbies" multiple="multiple">
<option>coding</option>
<option>swimming</option>
<option>hiking</option>
<option>drawing</option>
</select>
</div>
<div class="buttonrow">
<input type="submit" value="serialize!" />
</div>
</fieldset>
</form>
使用 Ajax 发送这个表单非常简单:
$('person-example').request();
//表单已经被发送
//做同样的事情,但在发送完成后进行回调:
$('person-example').request({
onComplete: function(){
alert('Form data saved!')
}
})
若需要重新定义 HTTP 的发送方式或增加一些参数,请在参数 options
中使用 method
和 parameters
属性指定。在下面的样例中,我们将设置发送方式为 GET,并且增加两个固定不变的参数值:
interests
和 hobbies
。虽然表单中已经存在这两个值,但这里的值会被优先使用。
$('person-example').request({
method: 'get',
parameters: { interests:'JavaScript', 'hobbies[]':['programming', 'music'] },
onComplete: function(){ alert('Form data saved!') }
})