Ajax

在之前自己也有总结过关于Ajax的笔记,各种的懵圈,通过一次项目和几次的总结和分享,我对Ajax终于算是有了一定的理解和自己的见解。相信大家见过和度过了很多的关于Ajax的什么前世今生、大刀阔斧等文章,我自己也受益匪浅。在这里我就谈谈自己的简单理解和用法。

  • Ajax是什么?

    Ajax就是当浏览器(客户端)向服务器发送请求时用的一种技术,它的核心是XMLHttpRequest对象,他最大的特点就是向服务器请求额外的数据而无须加载页面(刷新),既异步加载

  • Ajax技术是怎样实现请求的?

    目前Ajax技术有两种方式实现请求:一、通过他的核心对象XHR(XMLHttpRequest的缩写);二、通过window.fetch()方法进行请求。

    1.1通过XHR对象进行请求(原生js)代码如下:

      //1、创建XHR对象
    var request = new XMLHttpRequest();//在大多数浏览器中,在ie5、ie6中不支持这个方式
    //在ie5、ie6中兼容只需定义下面这个函数
    var request;
    if(window.XMLHttpRequest){
    request = new XMLHttpRequest();
    }else{
    request = new ActiveXObject("Microsoft.XMLHTTP");
    } //2、进行请求完整代码
    var xhr = '';
    var requestData = '';
    //兼容性处理
    if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest();
    }else{
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    } xhr.open('GET/POST','url',true/false);//get和post请求,true为异步请求、false我为同步请求,请求的URL中可带参数进行请求
    xhr.setRequestHeader("Content-type", "application/json");//添加http头信息,该函数的顺序必须是open之后,send之前
    xhr.send(JSON.stringify({
    name: '小明',
    age: 20
    }));//post的send(String)必须要,send用于发送请求参数,如果不需要请求体发送请求参数,则为null。
    //send传输的数据是以json数据格式传给后台的。
    //返回响应
    xhr.onreadystatechange = function(){
    if(xhr.readyState == 4){
    if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
    //请求成功的处理函数,服务器返回的数据存入responseText属性中
    requestData = xhr.responseText;//获取到后台响应的数据
    var date = JSON.parse(requestData);//将响应数据转化成json格式,以便使用
    //使用数据
    //~~~
    }else{
    //请求数据错误的处理函数
    }
    }else{
    //ajax发送失败,没有得到响应数据
    }
    }

    1.2使用jQuery的$.ajax()方法实现请求,代码如下:

       $.ajax({
    type: 'GET',//请求方式
    url: 'url',//请求资源地址或请求接口
    data: {
    //请求参数
    },
    success: function(data){//服务器响应的数据都存入data中
    //请求成功处理函数
    if(data.status === '0'){
    alert(data.message);
    } else {
    //向自己的html添加服务器响应的数据
    }
    }
    error: function(){
    //请求失败处理函数
    }
    });

    2、目前市场上已经在使用window.fetch()方法,XMLHttpRequest 是一个设计粗糙的 API,不符合关注分离(Separation of Concerns)的原则,配置和调用方式非常混乱,而且基于事件的异步模型写起来也没有现代的 Promise,generator/yield,async/await 友好。Fetch 的出现就是为了解决XHR的问题

    他的请求代码如下:

      window.fetch(url).then(function(response){//响应值放入response中
    return response.json();//用json()方法把相应的数据转化为javascript对象
    }).then(function(data)
    //请求成功处理函数
    }).catch(function(e){
    //请求失败处理函数
    })
  • Ajax扩展

    Ajax为了扩充他的功能,发展了XHR2,这里我就不再详细说明,想要对Ajax的请求做详细了解的可以查看我最初的Ajax学习笔记!

Ajax-快速上手前后端交互的更多相关文章

  1. content-type常见类型辨析(以ajax与springmvc前后端交互为例)

    博客搬家: content-type常见类型辨析(以ajax与springmvc前后端交互为例) 在http报文的首部中,有一个字段Content-type,表示请求体(entity body)中的数 ...

  2. SSM-网站后台管理系统制作(4)---Ajax前后端交互

    前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...

  3. thinkphp+jquery+ajax前后端交互注册验证

    thinkphp+jquery+ajax前后端交互注册验证,界面如下 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...

  4. ajax学习----json,前后端交互,ajax

    json <script> var obj = {"name": "xiaopo","age": 18,"gender ...

  5. Vue-CLI项目-axios模块前后端交互(类似ajax提交)

    08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axio ...

  6. 从MVC到Ajax再到前后端分离的思考

    前言 一位小妹去面试前端,前端leader问了"什么是ajax?",答:"接收后台的数据,然后然后自己填充和渲染样式":一位小哥去面试后台,技术经理问了&quo ...

  7. Node之简单的前后端交互

    node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...

  8. Django之META与前后端交互

    Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...

  9. 前后端交互实现(nginx,json,以及datatable的问题相关)

    1.同源问题解决 首先,在同一个域下搭建网络域名访问,需要nginx软件,下载之后修改部分配置 然后再终端下cmd  nginx.exe命令,或者打开nginx.exe文件,会运行nginx一闪而过, ...

随机推荐

  1. box-shadow阴影效果

    .shadowBox{ -moz-box-shadow:5px 5px 5px #A9A9A9; -webkit-box-shadow:5px 5px 5px #A9A9A9; box-shadow: ...

  2. XShell安装(五)

    Xshell就是一个远程控制Centos的软件:(用XShell比较方便,试用的都知道,界面也人性化) 详细介绍请看 百度百科 我随便百度下载了一个中文版的 给下地址  http://rj.baidu ...

  3. Andrew Ng机器学习编程作业: Linear Regression

    编程作业有两个文件 1.machine-learning-live-scripts(此为脚本文件方便作业) 2.machine-learning-ex1(此为作业文件) 将这两个文件解压拖入matla ...

  4. Linux中的预定义变量

    解释: 主要是Bash中已经定好的变量,名称不能自定义,作用也是固定的 $? 最后一次执行的命令返回状态,0为成功,非0为失败 $$ 当前进程的进程号 $! 后台运行的最后一个进程的进程号 例子: [ ...

  5. ALE和IDocs

    转自:http://blog.163.com/shenshengqge@126/blog/static/820512902011101152518635/ 作为目前ERP市场上最为领先的应用系统之一, ...

  6. zabbix-2.4.8-1添加tcp状态监控

    1.安装zabbix-agentyum -y install zabbix-2.4.8-1.el6.x86_64.rpm zabbix-agent-2.4.8-1.el6.x86_64.rpm2.编辑 ...

  7. 【Network】DDoS攻击防御

    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大,最难防御的攻击之一. 按照发起的方式 ...

  8. 【HTTP】WEB机器人

    <HTTP权威指南>学习摘要 Web Robot的自活跃(self-animating)用户代理. Web机器人是在不需要人工干预的情况下,自动进行一系列Web事务处理的软件程序,别名“爬 ...

  9. outlook 设置分类收邮件

    打开outlook,工具---->“规则和通知”.建相应的规则即可.

  10. Android:日常学习笔记(8)———开发微信聊天界面

    Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.