zoukankan      html  css  js  c++  java
  • ajax post(copy part)

    srcpage

    var q=new XMLHttpRequest();
    var data='usr=weidiao&pwd=haha';
    data=encodeURI(data);
    var url="xxxxxx";
    q.open("post",url);
    q.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    q.onreadystatechange=function(){
    
    }
    q.send(data);

    一般来说form中存放数据的控件主要是<input>,而这个<input>type很多,如 ‘submit’,‘hidden’, ‘password’, ‘text’,‘checkbox’, ‘radio’等。因此第一步我们要做的就是先写一个方法,将将form中各种类型的<input>将数据值给抠出来。具体见如下代码:

    1. //获取指定form中的所有的<input>对象  
    2. function getElements(formId) {  
    3.     var form = document.getElementById(id);  
    4.     var elements = new Array();  
    5.     var tagElements = form.getElementsByTagName('input');  
    6.     for (var j = 0; j < tagElements.length; j++)  
    7.         elements.push(tagElements[j]);  
    8.     return elements;  
    9. }  

     

    接着我们需要获取每个input对象的name-value对,代码如下:

    1. function inputSelector(element) {  
    2.   if (element.checked)  
    3.      return [element.name, element.value];  
    4. }  
    5.     
    6. function input(element) {  
    7.     switch (element.type.toLowerCase()) {  
    8.       case 'submit':  
    9.       case 'hidden':  
    10.       case 'password':  
    11.       case 'text':  
    12.         return [element.name, element.value];  
    13.       case 'checkbox':  
    14.       case 'radio':  
    15.         return inputSelector(element);  
    16.     }  
    17.     return false;  
    18. }  

    接着我们就可以将所有这些input对象中的name-value对以图1-5中POSTDATA那样的格式组织起来。代码如下:

    1. function serializeElement(element) {  
    2.     var method = element.tagName.toLowerCase();  
    3.     var parameter = input(element);  
    4.   
    5.     if (parameter) {  
    6.       var key = encodeURIComponent(parameter[0]);  
    7.       if (key.length == 0) return;  
    8.   
    9.       if (parameter[1].constructor != Array)  
    10.         parameter[1] = [parameter[1]];  
    11.         
    12.       var values = parameter[1];  
    13.       var results = [];  
    14.       for (var i=0; i<values.length; i++) {  
    15.         results.push(key + '=' + encodeURIComponent(values[i]));  
    16.       }  
    17.       return results.join('&');  
    18.     }  
    19.  }  
    20.     
    21. function serializeForm(formId) {  
    22.     var elements = getElements(formId);  
    23.     var queryComponents = new Array();  
    24.   
    25.     for (var i = 0; i < elements.length; i++) {  
    26.       var queryComponent = serializeElement(elements[i]);  
    27.       if (queryComponent)  
    28.         queryComponents.push(queryComponent);  
    29.     }  
    30.   
    31.     return queryComponents.join('&');  
  • 相关阅读:
    微信公众号迁移配置注意点
    关于memcache 命令查看和 Telnet
    centOS 安装(光安装 和 u盘安装)
    CentOS删除自带的java,安装新java
    ubuntu常用命令
    ubuntu 的挂起与休眠
    saiku应用的调试
    数据挖掘123
    unbutu 安装java教程
    workbench的schema讲解一:(维度dimension设置的基本内容)
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/5018458.html
Copyright © 2011-2022 走看看