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('&');  
  • 相关阅读:
    history对象 back() forward() go() 和pushState() replaceState()
    计算机组成原理 常用名词解释
    Angular之 Scope和 Directive
    Angular1.x DirtyChecking(脏值检查) $watch, $apply, $digest
    ES6 之 let和const命令 Symbol Promise对象
    Angular1.x 基础总结
    Node.js 常用 API
    前端自动化和前端开发环境
    CSS3入门
    HTML5入门总结 HTML5API
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/5018458.html
Copyright © 2011-2022 走看看