Ajax的四个技术基石和重构

news/2024/7/17 2:57:21 标签: ajax, xmlhttprequest, function, object, javascript, url

1.Ajax的四个技术基石
javascript+css+dom+xmlhttpRequest
使用dom(文档对象模型)定义用户界面的结构,是一组可以使用javascript操作的可编程对象展现出web页面的结构
使用xmlhttpRequest以异步方式与服务器通信.


web页面的dom表示是一个树状结构,由元素或节点组成,节点还可能包含很多子结点.js引擎通过全局变量
document公开当前web页面的根节点,这个变量是所有dom操作的起点.
  var childEl=document.createElement('div');//创建新元素
          var el=document.getElementById('empty');
  el.appendChild(childEl);  //添加子节点
  var txtNode=document.createTextNode(text);//创建文本元素
  childEl.appendChild(txtNode);

  var childer=empty.childNodes;//找子结点

  for(var i=0;i<childern.length;i++)
  {
   childern[i].className='programmed'; //定义子结点的css样式
 
  }


.programmed{
  color: blue;
 font-family: helvetica;
 font-weight: bold;
 font-size: 10px;
}


el.innerHtml="<div class='programmed'>"+text+"</div>";

css  www.csszengarden.com
css www.meyerweb.com/eric/css
js边学边做 www.w3schools.com/js/js_examples_3.asp  交互式学习教程
 

2.重构
net.js
/*
url-loading object and a request queue built on top of it
*/

/* namespacing object */
var net=new Object();

net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;


/*--- content loader object for cross-browser requests ---*/
net.ContentLoader=function(url,onload,onerror,method,params,contentType){
  this.req=null;
  this.οnlοad=onload;
  this.οnerrοr=(onerror) ? onerror : this.defaultError;
  this.loadXMLDoc(url,method,params,contentType);
}

net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){
  if (!method){
    method="GET";
  }
  if (!contentType && method=="POST"){
    contentType='application/x-www-form-urlencoded';
  }
  if (window.XMLHttpRequest){
    this.req=new XMLHttpRequest();
  } else if (window.ActiveXObject){
    this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (this.req){
    try{
      var loader=this;
      this.req.onreadystatechange=function(){
        net.ContentLoader.onReadyState.call(loader);
      }
      this.req.open(method,url,true);
      if (contentType){
        this.req.setRequestHeader('Content-Type', contentType);
      }
      this.req.send(params);
    }catch (err){
      this.onerror.call(this);
    }
  }
}


net.ContentLoader.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
  if (ready==net.READY_STATE_COMPLETE){
    var httpStatus=req.status;
    if (httpStatus==200 || httpStatus==0){
      this.onload.call(this);
    }else{
      this.onerror.call(this);
    }
  }
}

net.ContentLoader.prototype.defaultError=function(){
  alert("error fetching data!"
    +"/n/nreadyState:"+this.req.readyState
    +"/nstatus: "+this.req.status
    +"/nheaders: "+this.req.getAllResponseHeaders());
}


http://www.niftyadmin.cn/n/1425728.html

相关文章

青龙面板一键解决白屏问题【2022/6/2】

适用于青龙v2.11.1及以下版本 v2.11.2及以上版本均不会白屏&#xff0c;如有问题可尝试找回对应版本的index.html文件 文章目录1.进入容器2.一键修复1.进入容器 注容器名是ql还是qinglong&#xff0c;和自己的保持一致。 docker exec -it qinglong bash2.一键修复 bash <…

ajax取歌词(*歌曲地址是中文的会出错)

取歌词(歌曲地址是中文的会出错) play.jsp<% page language"java" import"java.util.*" contentType"text/html; charsetGB2312"%><% page import"com.pp.db.*" %><% page import"my.bean.*" %><!DOC…

Python批量修改文件名实例代码

因为某搬砖人要给老师把跑的实验结果名由1-5改成21-25&#xff0c;且要删除跑了一半的6&#xff0c;所以写以下代码进行批量修改&#xff0c;有需要的可以在此基础上进行补充完善。 如&#xff1a;HV_C1_d_01_1_0_AC_MaF1_M10_D19_1.mat—>HV_C1_d_01_1_0_AC_MaF1_M10_D19_2…

Microsoft Script Debugger(js的调试工具)

Microsoft Script Debugger在IE里的js调试工具,能够助你迅速找到错误 下载:http://download.microsoft.com/download/winscript56/Install/1.0/W9XMe/CN/scd10chs.exe 使用步骤1 IE里设置 工具/Internet选项/高级/禁用脚本调试 前的勾去掉2 在IE里运行你要调试的页面3 在Micr…

DOM查看器

使用Mozilla FireFox浏览器的开发人员可能用过FireFox里的DOM查看器&#xff0c;如下&#xff1a;来查看窗口以及其内容的结构和属性。相信大家用的更多的应该是Firebug这个插件&#xff0c;它不仅可以查看DOM结构&#xff0c;更方便的是可以调试JS代码&#xff0c;如下&#x…

基于CNN-RNN的医疗文本生成

&#x1f431; 基于CNN-RNN的医疗文本生成 本项目使用经过IMAGENET预训练的resnet101网络对图像特征进行提取后&#xff0c; 将图像特征输入LSTM来生成影像的文本描述。 初步实现了图像到文本的简单生成。 &#x1f4d6; 0 项目背景 随着近年来深度学习的飞速发展&#xff0c…

【青龙2.13依赖安装失败修复】ERR_PNPM_REGISTRIES_MISMATCH This modules directory was created using ...

在新版的青龙面板自带的依赖安装中总是安装失败&#xff0c;产看日志发现&#xff1a; ERR_PNPM_REGISTRIES_MISMATCH  This modules directory was created using the following registries configuration: {“default”:“https://registry.npmjs.org/”}. The current con…

*仿IT英才网 注册(限时提示)

效果见 http://www.cnithr.com/personal/register/user_register_login.php?reg_fromraffle20080615_69&tta45&ttu978167 注册登陆 像个组件一样四种状态:初始foucus lostfoucs 检测 right/wrong login.jsp<% page language"java" import"java.ut…