jquery.form.js實現(xiàn)將form提交轉(zhuǎn)為ajax方式提交的方法
來源:易賢網(wǎng) 閱讀:744 次 日期:2015-04-09 16:42:22
溫馨提示:易賢網(wǎng)小編為您整理了“jquery.form.js實現(xiàn)將form提交轉(zhuǎn)為ajax方式提交的方法”,方便廣大網(wǎng)友查閱!

這個框架集合form提交、驗證、上傳的功能。

這個框架必須和jquery完整版結(jié)合,否則使用min則無效。

原理:利用js進行對form進行組裝成ajax的url和data,原理還是用ajax來提交,其實這完全可以自己寫,但是有這個框架可能會更簡單。

一、最簡單例子:

第一步:引用js

<!--這里的min是自己用js壓縮工具對完整版進行的壓縮

并不是真正的min,所以好使-->

<script type="text/javascript" src="js/jquery-1.7.min.js"></script>

<script type="text/javascript" src="js/jquery.form.js"></script>

第二步:頁面寫form

<form id="showDataForm"

action="/024pm/f_shopUser.do?method=login" method="post">

<input type="text" value="" name="name" maxlength="2"/>

<input type="password" value="" name="password" maxlength="2"/>

<input type="submit" value="提交"/>

</form>

<div id="output1"

style="width:1000px;height:200px;background-color:#eee;">

</div>

第三步:寫js調(diào)用jquery.form.js,對form表單進行ajax提交

$(document).ready(function() {

var options = {

target: '#output1',

// 從服務(wù)傳過來的數(shù)據(jù)顯示在這個div內(nèi)部

也就是ajax局部刷新

beforeSubmit: showRequest,

// ajax提交之前的處理

success: showResponse

// 處理之后的處理

};

$('#showDataForm').submit(function() {

$(this).ajaxSubmit(options);

return false;

//非常重要,如果是false,則表明是不跳轉(zhuǎn)

//在本頁上處理,也就是ajax,如果是非false,則傳統(tǒng)的form跳轉(zhuǎn)。

});

});

function showResponse(responseText, statusText, xhr, $form) {

alert(xhr.responseText+"=="+$form.attr("method")+'status: ' +

statusText + '\n\nresponseText: \n' + responseText);

//xhr:說明你可以用ajax來自己再次發(fā)出請求

//$form:是那個form對象,是一個jquery對象

//statusText:狀態(tài),成功則為success

//responseText,服務(wù)器返回的是字符串(當然包括html,不包括json)

}

function showRequest(formData, jqForm, options) {

//formData是數(shù)組,就是各個input的鍵值map數(shù)組

//通過這個方法來進行處理出來拼湊出來字符串。

//formData:拼湊出來的form字符串,比如name=hera&password,

//其實就是各個表單中的input的鍵值對,

//如果加上method=XXXX,那也就是相當于ajax內(nèi)的data。

var queryString = $.param(formData);

alert(queryString+"======"+formData.length);

for (var i=0; i < formData.length; i++) {

alert(formData[i].value+"==============="+formData[i].name);

}

//jqForm,jquery form對象

var formElement = jqForm[0];

alert($(formElement).attr("method"));

alert($(jqForm[0].name).attr("maxlength"));

//非常重要,返回true則說明在提交ajax之前你驗證

//成功,則提交ajax form

//如果驗證不成功,則返回非true,不提交

return true;

}

二、options對象內(nèi)的值有哪些?

主要的有那么幾個常用的屬性:

var options = {

target: '#output1',

data:{param1:"我自己的第一個額外的參數(shù)"},

//這個參數(shù)是指通過ajax來給服務(wù)器提交除了form內(nèi)部input的參數(shù)

//在后臺中使用String param1=req.getParameter("param1");獲取。

// dataType: null,

dataType:'json',

//這個參數(shù)值的是服務(wù)器返回的數(shù)據(jù)類型,默認的是null

//也就是服務(wù)器可以默認返回字符串,然后將這些字符串放在target內(nèi)部

//當然還有json、xml,其中最常用的便是null和json

//對于json的使用,我們會稍后講解到

beforeSubmit: showRequest,

success: successRes,

type:'POST'

//提交方式,默認是自己在form標簽上指定的method

//如果沒有指定,則使用get。

url:''

//重新提交的url,即url可以在form中配置

//也可以在這里配置。

};

三、如何解析服務(wù)器傳遞過來的json數(shù)據(jù)

我們知道,使用jquery提供的ajax方法,如果服務(wù)器傳遞回來的是json數(shù)據(jù),是可以轉(zhuǎn)換為js的json對象,然后可以通過json.xxx來獲取相應(yīng)的值。那么這個框架呢?

1)首先options參數(shù)中指定dataType:'json'

2)通過框架進行提交

3)服務(wù)器接收

4)服務(wù)器返回json

5)頁面js接收json

關(guān)鍵是第五步,如何js接收json,是可以通過success: 指定的方法內(nèi)部進行如下操作:

var options = {

target: '#output1',

dataType:'json',

beforeSubmit: showRequest,

success: successRes

//注意了,successRes方法看起來并沒有有參數(shù)

//但是為何下面的方法就能有參數(shù)了呢,是可以這么傳遞的。

function successRes(jsonData){

alert(jsonData.param1);

}

四、如何通過這個框架進行簡單的驗證呢?

說到驗證,那肯定是在beforeSubmit的方法內(nèi)部進行驗證的,如何驗證,因為這個方法已經(jīng)將jqform對象,還有formData都傳給你了,你可以拿這兩個參數(shù)進行獲取相應(yīng)的input,然后進行自己的判定,如果判定成功,則提交。

function showRequest(formData, jqForm, options) {

for (var i=0; i < formData.length; i++) {

alert(formData[i].value+"========"+formData[i].name);

if (!formData[i].value) {

//驗證是否填寫完整

alert('input有沒有填寫的選項');

//如果驗證不通過,則返回false

return false;

}

}

var formElement = jqForm[0];

alert($(jqForm[0].name).attr("maxlength"));

return true;

}

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)