美文网首页
Ajax相关知识点

Ajax相关知识点

作者: sunningcarry | 来源:发表于2017-08-25 16:25 被阅读104次

ajax特性:可实现局部刷新页面

自己封装Ajax

基本步骤

1.发送请求:

  • var xhr=new XMLHttpRequest();
  • xhr.open("GET","test1.txt",true):规定请求的类型、URL 以及是否异步处理请求。
  • xhr.send()

xhr.open(method,url,async)>
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
xhr.send()>
send(string): 将请求发送到服务器。
string:仅用于 POST 请求

2.判断响应是否成功(获得响应数据):

  • 知晓请求的状态 xhr.readyState==4,每次状态改变都会触发onreadystatechange

0:请求未初始化
1:与服务器连接已经建立
2:服务器已经接收到请求
3:服务器正在处理请求
4:请求处理完成,且响应已经就绪

  • 监听服务器的状态码xhr.status == 200
xhr.onreadystatechange=function(){
            if(xhr.readyState==4 &&xhr.status==200 ){
                //执行响应数据 
            }
   }

注意:Ajax中get post处理方式不一样

  • 请求url不同
    get: 请求数据会出现在url中:opt.url + '?' + postData
    post: opt.url
  • post需要设置请求头
    这个请求头是告诉服务器怎么去解析请求的正文部分。
  • xhr.send
    post: xhr.send(postData);
    get: xmlHttp.send(null);

ajax实现完整代码

/* 封装ajax函数
 * @param {string}opt.type http连接的方式,包括POST和GET两种方式
 * @param {string}opt.url 发送请求的url
 * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
 * @param {object}opt.data 发送的参数,格式为对象类型
 * @param {function}opt.success ajax发送并接收成功调用的回调函数
 */
    function ajax(opt) {
        opt = opt || {};
        opt.method = opt.method.toUpperCase() || 'POST';
        opt.url = opt.url || '';
        opt.async = opt.async || true;
        opt.data = opt.data || null;
        opt.success = opt.success || function () {};
        var xmlHttp = null;
        if (XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }
        else {
            xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
        }var params = [];
        for (var key in opt.data){
            params.push(key + '=' + opt.data[key]);
        }
        var postData = params.join('&');
        if (opt.method.toUpperCase() === 'POST') {
            xmlHttp.open(opt.method, opt.url, opt.async);
            xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
            xmlHttp.send(postData);
        }
        else if (opt.method.toUpperCase() === 'GET') {
            xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);
            xmlHttp.send(null);
        } 
        xmlHttp.onreadystatechange = function () {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                opt.success(xmlHttp.responseText);
            }
        };
    }
//执行
ajax({
    method: 'POST',
    url: 'test.php',
    data: {
        name1: 'value1',
        name2: 'value2'
    },
    success: function (response) {
       console.log(response);
    }
});

封装
实现原理


get post方式的区别:

  • GET:一般用来获取数据 ,POST:一般用来修改数据
  • get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  • 大部分浏览器对GET url有长度限制2k,post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  • 缓存的问题。GET 请求默认在ajax环境下是会被缓存的 ,这样就会减轻服务器端的压力。但是post请求是不会被缓存的。
  • 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
  • GET/POST使用场景有区别
    • 用get:
      请求中的URL可以被手动输入
      请求中的URL可以被存在书签里,或者历史里,或者快速拨号里面,或者分享给别人。
      请求中的URL可以被缓存。GET 请求默认在ajax环境下是会被缓存的 ,这样就会减轻服务器端的压力。但是post请求是不会被缓存的。
      用GET: 可以重复的交互,比如取个数据,跳个页面
    • post:
      表单数据,数据库内添加新的数据行,用POST, 因为POST不能被缓存,所以浏览器不会多次提交。
  • 延伸
    http:get 获取数据 post:修改数据 put:增加数据 delete:删除数据

如何判断ajax数据加载完毕?

  • ajax请求设置为同步(同步慎用-项目中的这种办法)
    在$(ajax)中,的async:false,变为同步,也就是说,先请求并将数据写入表格以后,再执行排序的代码.
    但是建议:同步请求慎用,在数据量比较大的时候,用户缺一直在等待数据加载出来,很痛苦
  • ajax异步请求,判断数据加载完毕
    • 设置定时器监测
    • promise(fetch)

会更新

跨域的几种方式具体实现和应用

ajax实时更新数据

取消一个Ajax

xhr.absort();

判定是一個ajax請求

  • 请求进行拦截,在拦截器中我需要判断HttpServletRequest是否为Ajax异步请求。X-Requested-With="XMLHttpRequest"来判断这个请求是否为Ajax请求!

相关文章

  • Ajax相关知识点

    ajax特性:可实现局部刷新页面 自己封装Ajax 基本步骤 1.发送请求: var xhr=new XMLHtt...

  • 2、Ajax网络请求

    简介 最近在进行网站开发,遇到了Ajax网络请求,记录一下相关笔记,主要是对于GET、POST请求的相关知识点。 ...

  • PHP-AJAX相关知识点

    AJAX 是 Asynchronous JavaScript And XML 的首字母缩写。最好理解的例子,比如G...

  • JavaWeb学习-Ajax-1-Ajax简介

    JavaWeb学习-Ajax-1-Ajax简介 进入到一个新的知识点的学习,这个知识点叫做Ajax,指的是异步的j...

  • Ajax总结

    一、Ajax简介 1.Ajax相关 AJAX 全称为Asynchronous Javascript And XML...

  • Ajax相关

    1.在ajax的success中设置setTimeout. 参照如下代码设置 2.在ajax的success中实现...

  • 前端知识点总结——AJAX

    前端知识点总结——Ajax 1.ajax 2.HTTP协议 2.1请求头 2.2响应(response)消息 2....

  • Ajax相关问题

    Ajax可以使网页实现异步更新,能够在不重新加载整个网页的情况下,对网页的某部分进行更新。就是利用JavaScri...

  • Ajax相关总结

    一、 认识Ajax 1、 初识 ajax 我们平常上网,不管是注册账号,还是浏览网页,其本质就是通过客户端向服务器...

  • AJAX的相关

    题目1: ajax 是什么?有什么作用? 全称是Asynchronous JavaScript and Xml,a...

网友评论

      本文标题:Ajax相关知识点

      本文链接:https://www.haomeiwen.com/subject/iesydxtx.html