您的位置:首页 > 运维架构

ajax post(copy part)

2015-12-04 10:02 218 查看
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>将数据值给抠出来。具体见如下代码:

//获取指定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('&');

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: