原生表單序列化
隨著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("&");}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答