原生表單序列化
隨著Ajax的出現,表單序列化已經成為一種需求,在學習原生Ajax時,若用POST方法向后臺提交數據時,就需要將表單序列化
在JavaScript中可以利用表單字段的type屬性,連同name和value屬性,一起實現表單的序列化。
在進行表單序列化之前,需要弄清楚在表單提交期間,瀏覽器是怎樣將數據發送給服務器的。
實現表單序列化的函數為:
function serialize(form){ var parts=[], field=null, i, len, j, optLen, option, optValue; for (i = 0; i < form.elements.length; i++) { field=form.elements[i]; switch (field.type) { case 'select-one': case 'select-multiple': if(field.name.length){ for (var j = 0; j < field.options.length; j++) { option=field.options[j]; if (option.selected) { optValue=""; if (option.hasAttribute) { optValue=(option.hasAttribute('value') ? option.value : option.text); }else{ optValue=(option.attribute['value'].specified ? option.value : option.text); } parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(optValue)); } } } break; case undefined: //字段集 case "file": //文本輸入 case "submit": //提交按鈕 case "reset": //重置按鈕 case "button": //自定義按鈕 break; case "radio": //單選按鈕 case "checkbox": //復選框 if (!field.checked) { break; } //執行默認操作 default: //不包含沒有名字的表單字段 if(field.name.length){ parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value)); } } } return parts.join("&"); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。