posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          ajax Form

          Posted on 2008-11-09 18:35 G_G 閱讀(1820) 評論(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&param2=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);
          ????
          //??&#63;
          ????//&?&#38;
          ????var?urls?=?url+'?'+datas.join("&");
          ????AjaxFunction(urls,returnFun);
          }




          主站蜘蛛池模板: 玛曲县| 金乡县| 巴彦淖尔市| 稻城县| 临朐县| 河池市| 吉隆县| 阿克陶县| 湘西| 枝江市| 新建县| 石楼县| 沁源县| 长白| 京山县| 江都市| 乌审旗| 卓尼县| 蕲春县| 洮南市| 丹棱县| 山东| 高安市| 云南省| 乐东| 延寿县| 赣州市| 犍为县| 铜川市| 博客| 南和县| 台州市| 永春县| 兴化市| 宁安市| 桦南县| 西贡区| 楚雄市| 郯城县| 虎林市| 澄城县|