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 相关文章推荐
jQeury淡入淡出需要注意的问题
Sep 08 Javascript
鼠标滑上去后图片放大浮出效果的js代码
May 28 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
Feb 20 Javascript
详解AngularJS中的filter过滤器用法
Jan 04 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
Jun 20 Javascript
jQuery插件扩展extend的简单实现原理
Jun 24 Javascript
vue-router项目实战总结篇
Feb 11 Javascript
完美解决iview 的select下拉框选项错位的问题
Mar 02 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
vue内置组件keep-alive事件动态缓存实例
Oct 30 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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利用cookie实现访问次数统计代码
2011/05/19 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
python远程登录代码
2008/04/29 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
django使用channels实现通信的示例
2020/10/19 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
高中化学教学反思
2014/01/13 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
2014最新离职证明范本
2014/09/12 职场文书
名人演讲稿范文
2014/09/16 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
网络营销实训总结
2015/08/03 职场文书
仓库管理制度范本
2015/08/04 职场文书
mybatis 获取更新记录的id
2022/05/20 Java/Android