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中为String对象添加trim,ltrim,rtrim方法
Sep 22 Javascript
js获取图片长和宽度的代码
Nov 24 Javascript
鼠标滚轴控制文本框值的JS代码
Nov 19 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
javascript封装简单实现方法
Aug 11 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
JavaScript九九乘法口诀表的简单实现
Oct 04 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
Node.js简单入门前传
Aug 21 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
js加解密 脚本解密
2008/02/22 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
JSON 数据格式详解
2017/09/13 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python IDLE入门简介
2017/12/08 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
安全生产计划书
2014/05/04 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
好好学习保证书
2015/02/26 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
Django+Celery实现定时任务的示例
2021/06/23 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL