Posted on 2008-11-09 18:35
G_G 閱讀(1817)
評論(0) 編輯 收藏 所屬分類:
javascript
不要為 拼寫 ajax url 而郁悶了。希望能對大家有幫助。
/*?
??? 1.form?ajax?使用:
????eG: form就是普通的 html form
????????<input?type="button"?value="xx"?onclick="formAjax('data.jsp',this.form,ajaxReturn)"/>
????????function?ajaxReturn(data){
????????????document.getElementById("div1").innerHTML?=??data?;
????????}
??
????
??? 2.ajax?使用???:
????AjaxFunction
????????AjaxFunction('url?param=tt¶m2=te',function(text){??
????????????alert(text);
????????});
??? 3.迭代器:
??? recursiveNodes(array,dom,pushFun,layer)
? ? ?? array 迭代寄存器
? ? ?? dom 被迭代對象
?????? pushFun 自定義收集方法
??????????? pushFun(array,node,layer)
?????????????? node 迭代中對象
?????? layer 深度
??? EG:
??? var arr = [] ;
??? recursiveNodes(arr ,dom,function(array,node,layer){
??????????? arr.push(node);
???? },2);
? ? ???
?*/
var?_request;
try?{
????this._request?=?new?XMLHttpRequest();
}?catch?(e)?{
????try?{
????????this._request?=?new?ActiveXObject('Msxml2.XMLHTTP');
????}?catch?(e)?{
????????try?{
????????????this._request?=?new?ActiveXObject('Microsoft.XMLHTTP');
????????}?catch?(e)?{
????????????request?=?false;
????????}
????}
}
var?AjaxFunction?=?function(urls,?getAjaxText)?{
????AjaxFunction._getAjaxText?=?null;
????_url?=?'';
????_params?=?'';
????AjaxFunction._getAjaxText?=?getAjaxText;
????var?strs?=?urls.split(/\?/);
????_url?=?strs[0];
????if?(strs.length?>?1)
????????_params?=?strs[1];
????_request.open("POST",?this._url,?true);
????_request.setRequestHeader("Cache-Control",?"no-cache");
????_request.setRequestHeader("content-type",
????????????"application/x-www-form-urlencoded");
????_request.send(_params);
????_request.onreadystatechange?=?_onComplete;
};
function?_onComplete()?{
????if?(_request.readyState?==?4)?{
????????if?(_request.status?==?200?||?_request.status?==?0)?{
????????????if?(_request.responseText?!=?null?&&?_request.responseText?!=?''
????????????????????&&?_request.responseText?!=?'?')
????????????????AjaxFunction._getAjaxText(_request.responseText);
????????}
????}
}
/*
?*?迭代?1.?array,dom?2.?array,dom,layer
?*/
function?recursiveNodes(array,?dom,?pushFun,?layer)?{
????if?(layer?==?0)
????????return;
????if?(layer?>?0)?{
????????--layer;
????????if?(dom.hasChildNodes?&&?dom.hasChildNodes())?{
????????????for?(?var?i?=?0;?i?<?dom.childNodes.length;?i++)?{
????????????????var?nodeT?=?dom.childNodes.item(i);
????????????????if?(typeof?pushFun?==?"function")
????????????????????pushFun(array,nodeT,?layer);
????????????????else
????????????????????array.push(nodeT);
????????????????recursiveNodes(array,?dom.childNodes.item(i),?pushFun,?layer);
????????????}
????????}?else
????????????return;
????}?else?if?(layer?<?0)?{
????????++layer;
????????var?nodeT?=?dom.parentNode;
????????if?(nodeT)?{
????????????if?(typeof?pushFun?==?"function")?{
????????????????pushFun(array,nodeT,?layer);
????????????}?else?{
????????????????array.push(nodeT);
????????????}
????????????recursiveNodes(array,?dom.parentNode,?pushFun,?layer)
????????}?else
????????????return;
????}
}
function?formAjax(url,ttform,returnFun){
????var?datas?=?[];
????var?arr?=?['input','select'];
????recursiveNodes(datas,ttform,function(array,node,layer){
????????for(var?i=0;i<arr.length;i++){
????????????if(?node.getAttribute?){
????????????????var?paramName?=?node.getAttribute('name')?;
????????????????if(?/select/i.test(?node.nodeName?)?){
????????????????????array.push(paramName+'='+node.options[node.selectedIndex].value);
????????????????}else?if(?paramName?!=null?&&??/^\s*(\w+)\s*$/g.test(paramName)?&&?new?RegExp(arr[i],'i').test(node.nodeName)??){
????????????????????array.push(paramName+'='+node.value);
????????????????}
????????????}
????????}
????},999);
????//???
????//&?&
????var?urls?=?url+'?'+datas.join("&");
????AjaxFunction(urls,returnFun);
}