午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

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

    這個(gè)框架集合form提交、驗(yàn)證、上傳的功能。

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

    原理:利用js進(jìn)行對(duì)form進(jìn)行組裝成ajax的url和data,原理還是用ajax來(lái)提交,其實(shí)這完全可以自己寫(xiě),但是有這個(gè)框架可能會(huì)更簡(jiǎn)單。

    一、最簡(jiǎn)單例子:

    第一步:引用js

    <!--這里的min是自己用js壓縮工具對(duì)完整版進(jìn)行的壓縮

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

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

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

    第二步:頁(yè)面寫(xiě)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>

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

    $(document).ready(function() {

    var options = {

    target: '#output1',

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

    也就是ajax局部刷新

    beforeSubmit: showRequest,

    // ajax提交之前的處理

    success: showResponse

    // 處理之后的處理

    };

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

    $(this).ajaxSubmit(options);

    return false;

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

    //在本頁(yè)上處理,也就是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:說(shuō)明你可以用ajax來(lái)自己再次發(fā)出請(qǐng)求

    //$form:是那個(gè)form對(duì)象,是一個(gè)jquery對(duì)象

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

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

    }

    function showRequest(formData, jqForm, options) {

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

    //通過(guò)這個(gè)方法來(lái)進(jìn)行處理出來(lái)拼湊出來(lái)字符串。

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

    //其實(shí)就是各個(gè)表單中的input的鍵值對(duì),

    //如果加上method=XXXX,那也就是相當(dāng)于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對(duì)象

    var formElement = jqForm[0];

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

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

    //非常重要,返回true則說(shuō)明在提交ajax之前你驗(yàn)證

    //成功,則提交ajax form

    //如果驗(yàn)證不成功,則返回非true,不提交

    return true;

    }

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

    主要的有那么幾個(gè)常用的屬性:

    var options = {

    target: '#output1',

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

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

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

    // dataType: null,

    dataType:'json',

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

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

    //當(dāng)然還有json、xml,其中最常用的便是null和json

    //對(duì)于json的使用,我們會(huì)稍后講解到

    beforeSubmit: showRequest,

    success: successRes,

    type:'POST'

    //提交方式,默認(rèn)是自己在form標(biāo)簽上指定的method

    //如果沒(méi)有指定,則使用get。

    url:''

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

    //也可以在這里配置。

    };

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

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

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

    2)通過(guò)框架進(jìn)行提交

    3)服務(wù)器接收

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

    5)頁(yè)面js接收json

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

    var options = {

    target: '#output1',

    dataType:'json',

    beforeSubmit: showRequest,

    success: successRes

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

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

    function successRes(jsonData){

    alert(jsonData.param1);

    }

    四、如何通過(guò)這個(gè)框架進(jìn)行簡(jiǎn)單的驗(yàn)證呢?

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

    function showRequest(formData, jqForm, options) {

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

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

    if (!formData[i].value) {

    //驗(yàn)證是否填寫(xiě)完整

    alert('input有沒(méi)有填寫(xiě)的選項(xiàng)');

    //如果驗(yàn)證不通過(guò),則返回false

    return false;

    }

    }

    var formElement = jqForm[0];

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

    return true;

    }

    更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

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

    2025國(guó)考·省考課程試聽(tīng)報(bào)名

    • 報(bào)班類(lèi)型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專(zhuān)用圖標(biāo)
    聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
    咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)