ajax post(copy part)

本文介绍了一种从HTML表单中收集数据并将其转换为适合HTTP POST请求格式的方法。通过JavaScript实现,能够处理多种输入类型,包括文本、隐藏字段、密码、复选框和单选按钮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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('&');  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值