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('&');  
原文地址:https://www.cnblogs.com/weiyinfu/p/5018458.html