zoukankan      html  css  js  c++  java
  • javacript序列化表单数据

    在前端开发时,用到表单交互的比较多,在我们实现一些异步操作数据时,表单数据的序列化就显得尤为重要了。下面我们一起来看看如何进行序列化。

    如,我们在进行提交表单时,地址栏里会显示这样的东东:name=zhangsan&sex=male&phone=55555,这种就叫做序列化。

     

    js实现如下:

    // 通过表单的name或者id进行序列化

    var
    formData = function(formStr){ var elements = document.forms[formStr].elements || document.getElementById(formStr).elements, len = elements.length, i = 0, name = value = option = '', dataArr = []; for(; i < len; i++){ name = encodeURIComponent(elements[i].name); value = encodeURIComponent(elements[i].value); switch(elements[i].type){ case 'radio': case 'checkbox': if(elements[i].checked){ dataArr.push(name + '=' + value); } break; case 'select-one': case 'select-multiple': option = elements[i].options; var tempArr = []; for(var j = 0, mlen = option.length; j < mlen; j++){ if(option[j].selected){ option[j].attributes.value && option[j].attributes.value.specified ? tempArr.push(option[j].value) : tempArr.push(option[j].text); } } dataArr.push(name + '=' + encodeURIComponent(tempArr.join())); break; case 'button': case 'reset' : case 'submit': case 'file' : break; default: dataArr.push(name + '=' + value); break; } } return dataArr.join('&'); }
    //假设用作异步请求的js函数为ajax
    var url = formData('myform');
    ajax('a.php', url);
  • 相关阅读:
    计划任务和压缩归档
    libevent 源码学习三 —— 基本使用场景和事件流程
    libevent 源码学习二 —— reactor 模式
    libevent 库源码学习
    手动配置固定IP参数vim vim
    软件相关
    写xhttpd服务器时 遇到segmentation fault
    c与c++中输出字符指针和字符串指针的问题
    char * argv[] ,string简析
    传入参数与传出参数
  • 原文地址:https://www.cnblogs.com/tinkbell/p/3169965.html
Copyright © 2011-2022 走看看