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 相关文章推荐
JS网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
Feb 23 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
EasyUI中在表单提交之前进行验证
Jul 19 Javascript
值得学习的bootstrap fileinput文件上传工具
Nov 08 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
解决iview多表头动态更改列元素发生的错误的方法
Nov 02 Javascript
JavaScript实现shuffle数组洗牌操作示例
Jan 03 Javascript
vue elementui el-form rules动态验证的实例代码详解
May 23 Javascript
Vue 2.0 侦听器 watch属性代码详解
Jun 19 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数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHP多个版本的分析解释
2011/07/21 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
PHP加密解密类实例代码
2016/07/20 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
js左侧三级菜单导航实例代码
2013/09/13 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
vue实现搜索功能
2019/05/28 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python实现京东抢秒杀功能
2021/01/25 Python
DELPHI面试题研发笔试试卷
2015/11/08 面试题
司机职责范本
2014/03/08 职场文书
迎新晚会策划方案
2014/06/13 职场文书
人代会标语
2014/06/30 职场文书
五年级上册复习计划
2015/01/19 职场文书
java多态注意项小结
2021/10/16 Java/Android