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判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
js中一个函数获取另一个函数返回值问题探讨
Nov 21 Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
通过JS运行机制的角度说说作用域
Mar 12 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
简单实现php上传文件功能
2017/09/21 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
javascript中this关键字详解
2016/12/12 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
python3爬取torrent种子链接实例
2020/01/16 Python
python实现四人制扑克牌游戏
2020/04/22 Python
20年同学聚会邀请函
2014/02/04 职场文书
年度考核自我鉴定
2014/03/19 职场文书
公司应聘求职信
2014/06/21 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
信访维稳工作汇报
2014/10/27 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
基于Python实现一个春节倒计时脚本
2022/01/22 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技