ajax post(copy part)
2015-12-04 10:02
218 查看
srcpage
一般来说form中存放数据的控件主要是<input>,而这个<input>type很多,如 ‘submit’,‘hidden’, ‘password’, ‘text’,‘checkbox’, ‘radio’等。因此第一步我们要做的就是先写一个方法,将将form中各种类型的<input>将数据值给抠出来。具体见如下代码:
//获取指定form中的所有的<input>对象
function getElements(formId) {
var form = document.getElementById(id);
var elements = new Array();
var tagElements = form.getElementsByTagName('input');
for (var j = 0; j < tagElements.length; j++)
elements.push(tagElements[j]);
return elements;
}
接着我们需要获取每个input对象的name-value对,代码如下:
function inputSelector(element) {
if (element.checked)
return [element.name, element.value];
}
function input(element) {
switch (element.type.toLowerCase()) {
case 'submit':
case 'hidden':
case 'password':
case 'text':
return [element.name, element.value];
case 'checkbox':
case 'radio':
return inputSelector(element);
}
return false;
}
接着我们就可以将所有这些input对象中的name-value对以图1-5中POSTDATA那样的格式组织起来。代码如下:
function serializeElement(element) {
var method = element.tagName.toLowerCase();
var parameter = input(element);
if (parameter) {
var key = encodeURIComponent(parameter[0]);
if (key.length == 0) return;
if (parameter[1].constructor != Array)
parameter[1] = [parameter[1]];
var values = parameter[1];
var results = [];
for (var i=0; i<values.length; i++) {
results.push(key + '=' + encodeURIComponent(values[i]));
}
return results.join('&');
}
}
function serializeForm(formId) {
var elements = getElements(formId);
var queryComponents = new Array();
for (var i = 0; i < elements.length; i++) {
var queryComponent = serializeElement(elements[i]);
if (queryComponent)
queryComponents.push(queryComponent);
}
return queryComponents.join('&');
}
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>将数据值给抠出来。具体见如下代码:
//获取指定form中的所有的<input>对象
function getElements(formId) {
var form = document.getElementById(id);
var elements = new Array();
var tagElements = form.getElementsByTagName('input');
for (var j = 0; j < tagElements.length; j++)
elements.push(tagElements[j]);
return elements;
}
接着我们需要获取每个input对象的name-value对,代码如下:
function inputSelector(element) {
if (element.checked)
return [element.name, element.value];
}
function input(element) {
switch (element.type.toLowerCase()) {
case 'submit':
case 'hidden':
case 'password':
case 'text':
return [element.name, element.value];
case 'checkbox':
case 'radio':
return inputSelector(element);
}
return false;
}
接着我们就可以将所有这些input对象中的name-value对以图1-5中POSTDATA那样的格式组织起来。代码如下:
function serializeElement(element) {
var method = element.tagName.toLowerCase();
var parameter = input(element);
if (parameter) {
var key = encodeURIComponent(parameter[0]);
if (key.length == 0) return;
if (parameter[1].constructor != Array)
parameter[1] = [parameter[1]];
var values = parameter[1];
var results = [];
for (var i=0; i<values.length; i++) {
results.push(key + '=' + encodeURIComponent(values[i]));
}
return results.join('&');
}
}
function serializeForm(formId) {
var elements = getElements(formId);
var queryComponents = new Array();
for (var i = 0; i < elements.length; i++) {
var queryComponent = serializeElement(elements[i]);
if (queryComponent)
queryComponents.push(queryComponent);
}
return queryComponents.join('&');
}
相关文章推荐
- ajax post(copy part)
- [Windows Server 2008] 安装Apache+PHP+MySQL
- OpenCV 关于两张图片的整合问题
- centos6.5 修改ssh默认端口号 禁用root登录
- linux java 安装路径
- Linux 查看磁盘空间
- opencv2411使用接口时出现的几个错误
- windows xp 蓝屏报:stop 0x0000007e 错误
- linux下调整音量大小
- 用Tomcat和Eclipse开发Servlet程序
- 2.0网站
- nginx 源码学习笔记(二十三)—— event 模块(四) ——timer红黑树
- nginx 源码学习笔记(二十二)—— event 模块(三) ——epoll模块
- nginx 源码学习笔记(二十一)—— event 模块(二) ——事件驱动核心ngx_process_events_and_timers
- nginx 源码学习笔记(二十)—— event 模块(一) ——初始化
- photoShop支持retina显示屏
- nginx 源码学习笔记(十九)—— nginx启动过程函数调用图
- nginx 源码学习笔记(十八)—— ngx_add_inherited_sockets 继承的sockets
- 30 天学习 30 种新技术系列
- 项目管理中用到的Linux开源应用