JavaScript基础之AJAX简单的小demo


Posted in Javascript onJanuary 29, 2017

AJAX

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

function prepareForms() {
 for(var j=0 ; j<document.forms.length ; j++){
  var this_forms = document.forms[j];
  resetFields(this_forms);
   this_forms.onsubmit = function () {
    if(!validateForm(this)) return false; //进行浏览器端表单验证
    var article = document.getElementsByTagName("article")[0];
    if(submitFormWithAjax(this,article)) return false; //代表防止重复提交 实际的提交已经完成
   return true;
   }
 }
}

首先 通过表单的提交事件调用相应的验证方法 和ajax提交方法 如果说ajax提交成功 返回false 拦截提交事件 如果ajax失败 则正常提交

function displayAjaxLoading(element) {
 while(element.hasChildNodes()){
  element.removeChild(element.lastChild); //如果还有子节点 重复删除 直到内部为空
 }
 var content = document.createElement("img");
 content.setAttribute("src","images/loading.gif");
 content.setAttribute("alt","loading....");
 element.appendChild(content);
} //拿到元素 清空内部 并添加一个img
function submitFormWithAjax(whichform,thetarget) {
 var request = getHTTPObject();
 if(!request){return false ;}
 displayAjaxLoading(thetarget);//调用加载方法
 var dataParts = [];
 var element; //提前创建要用的容器
 for(var i=0 ; i<whichform.elements.length ; i++){
  element = whichform.elements[i];
  dataParts[i] = element.name + "=" +encodeURIComponent(element.value) //把元素的名字和值转化成URL编码放入容器中
 }
 var data = dataParts.join("&"); //把数组转化成一串字符串 每个项目之间用&连接
 request.open("post",whichform.getAttribute("action"),true); //向表单目标地址准备提出名为post的请求
 request.setRequestHeader("content-type","application/x-www-form-urlencoded");//设置头部信息
 //获取请求后就会调用一下的 方法 算是一个触发器 服务器会执行以下内容
 request.onreadystatechange = function () {
  if(request.readyState == 4){
   if(request.status == 200 || request.status == 0){
    var matches = request.responseText.match(/<article>([\s\S]+)<\/article>/) //捕获文本
    if(matches.length>0){
     thetarget.innerHTML = matches[1]; //正则表达式返回0为包含<article> 1为不包含的版本
    }
    else {
     thetarget.innerHTML = "<p>sorry not find</p>";
    }
   }
   else {
    thetarget.innerHTML = "<p>" + request.statusText + "</p>";
   }
  }
 }
 request.send(data); //对目标服务器发送请求
 return true;//代表函数执行完毕
}

让我们分步来查看具体做了什么事情

第一 获取了一个请求对象

第二 调用display方法 让页面删除article下的所有元素并放上load动画

第三 创建URL编码的请求 用数组存放 一项里面为name和被URL转义的value 然后把他每项通过&连接 组成一个完整的字符串

第四 设置了请求的基本属性 比如命名 目标地址 头文件

第五 创建一个监听程序 监听请求 如果成功则把响应的html填入到目标article中
第六 正式发送请求 成功返回ture

以上所述是小编给大家介绍的JavaScript基础 AJAX简单的小demo ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Javascript 检测、添加、移除样式(className)函数代码
Sep 08 Javascript
jQuery Clone Bug解决代码
Dec 22 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 Javascript
jQuery制作简单柱状图实例
Jan 28 Javascript
JavaScript编程的单例设计模讲解
Nov 10 Javascript
详解jQuery中的DOM操作
Dec 23 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
Nov 14 Javascript
浅谈vue.js导入css库(elementUi)的方法
Mar 09 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
Oct 19 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
Mar 12 Javascript
vue通过过滤器实现数据格式化
Jul 20 Javascript
JavaScript Date 知识浅析
Jan 29 #Javascript
JavaScript实现时钟滴答声效果
Jan 29 #Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 #Javascript
jQuery图片轮播功能实例代码
Jan 29 #Javascript
jQuery代码实现实时获取时间
Jan 29 #Javascript
用director.js实现前端路由使用实例
Jan 27 #Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 #Javascript
You might like
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
brook javascript框架介绍
2011/10/10 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
js实现无缝滚动图
2017/02/22 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
python多线程http下载实现示例
2013/12/30 Python
Python实现简单字典树的方法
2016/04/29 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
使用python实现对元素的长截图功能
2019/11/14 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
党员个人思想汇报
2013/12/28 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
实习协议书范本
2014/04/22 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
写给老师的感谢信
2015/01/20 职场文书
小班教师个人总结
2015/02/05 职场文书
祝酒词范文
2015/08/12 职场文书
关于运动会的广播稿
2015/08/19 职场文书