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 相关文章推荐
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
Nov 23 Javascript
Angularjs 基础入门
Dec 26 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
基于Vue.js实现数字拼图游戏
Aug 02 Javascript
jQuery解析XML 详解及方法总结
Sep 28 Javascript
Javascript的this用法
Jan 16 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
Vue.js tab实现选项卡切换
May 16 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
如何实现小程序tab栏下划线动画效果
May 18 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加密解密的代码
2006/10/09 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
React优化子组件render的使用
2019/05/12 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python与Redis的连接教程
2015/04/22 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
python实现微信自动回复功能
2018/04/11 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
使用Python实现画一个中国地图
2019/11/23 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python如何生成xml文件
2020/06/04 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
测绘工程本科生求职信
2013/10/10 职场文书
简历里的自我评价范文
2014/02/24 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
爱的教育观后感
2015/06/17 职场文书
处罚决定书范文
2015/06/24 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
Python基础知识之变量的详解
2021/04/14 Python
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技