ajax中提交表單,實際上是手動獲取表單的資料,然後對資料進行封裝,再通過非同步請求物件提交到服務端的過程。
ajax非同步請求物件的建立(可參考http://blog.csdn.net/lixianlin/archive/2009/12/14/5001923.aspx),需要考慮一下瀏覽器相容性,ie和非ie瀏覽器下建立方式不同。返回結果的處理,其實也就是非同步請求物件的**函式的構建。這兩步操作只要明白了非同步請求物件的工作原理,實現起來都不難,難的是如何獲取表單的資料並對資料進行封裝。
獲取表單資料的思路:對表單中的所有元素(當然是能夠提交資料的元素,不能提交資料的元素無須考慮)進行遍歷,獲取每個元素的name屬性和value值,這其中就需要考慮怎樣獲取value值,比如象select元素,並不是所有option的value值都有效,只有被選中的option才是有效的,這個不用多說,因為select元素的作用就是那樣的。
需要注意的事,對於file檔案上傳型別,是無法直接通過ajax來處理的,因為在設計js的時候,出於安全性考慮,網頁中的js被設計成不能訪問檔案的。網上所說的ajax上傳檔案(嚴格意義上這種說法是不正確的),都是通過其他方式來上傳檔案的。
提供乙個簡單遍歷表單資料的方法:
function getrequeststring(frm)
if (e.type == 'select-one') else if (e.type == 'select-multiple')
}} else if (e.type == 'checkbox' || e.type == 'radio')
} else if (typeof(e.value) != 'undefined')
} return arr.join('&');
}
引數為表單物件,或表單的id。
**中用到的$()函式的定義:
function $(s) else if (typeof(s) == "object") else
}
Ajax提交表單
class form group type text class form control placeholder 使用者名稱 required id username div class form group type password class form control placeholder...
Ajax表單提交例項
language vbscript codepage 65001 codepage必須為650001,否則也出現亂碼,如果有html文字,一定設為utf 8編碼,否則將出現亂碼.dim regid,regpassword,str regid request.form regid regpasswor...
ajax非同步提交表單。
ajax非同步提交表單有幾種方法。1,不利用表單,通過拼接字串data 進行提交資料。此方法如果想 需要借助html5 filereader 把轉換成base64字串通過隱藏域傳值。這樣有把base64字串傳到後台,base64字串中的 會在提交的時候被轉義。可以吧base64字串進行加密再解密 2...