request
1.5.1

request([options]) -> new Ajax.Request

这是一个便捷的方法,可将表单串行化并通过 Ajax.Request 提交到表单 action 属性指定的 URL。参数 options 会被传递到 Ajax.Request 实例。在 options 参数中,可重定义表单的 HTTP 发送方式(译注:指 get、post 等等)并指定附加的参数。

传递到 request()options 参数会智能的与 Ajax.Request 选项 进行融合:

样例

假设有如下的 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 中使用 methodparameters 属性指定。在下面的样例中,我们将设置发送方式为 GET,并且增加两个固定不变的参数值: interestshobbies。虽然表单中已经存在这两个值,但这里的值会被优先使用。

$('person-example').request({ 
	method: 'get', 
	parameters: { interests:'JavaScript', 'hobbies[]':['programming', 'music'] }, 
	onComplete: function(){ alert('Form data saved!') } 
})