ajax

皮卡皮卡皮
• 阅读 1545

ajax

定义 :异步的JavaScript 和 XML
是一种综合技术:运用了XMLHTTPRequest (xhr) 和服务器交换数据,通过JavaScript 局部渲染页面,从而实现异步的局部更新

同步与异步

同步 代码按顺序执行,会阻塞代码执行(alert)
异步 不会阻塞代码

XMLHTTPRequest xhr

    var xhr = new XMLHttpRequest();
        xhr.open("GET",'./be.txt',true)
        //打开的方法 地址 是否异步
        xhr.send();
        // 发送出去
        xhr.onreadystatechange = function(){
            if(xhr.readyState === 4&&xhr.status == 200){
            /* 如果xhr的状态是第4个状态 响应码为200 */
            console.log(xhr.responseText);
            //输出ajax 返回的文本内容
            pp.innerHTML = xhr.responseText
        }
    }

xhr

  • open()
  • send()
  • setRequestHeader()
  • xhr.readtstate
    • 0,未初始化
    • 1,请求参数已准备,尚未发送请求
    • 2,已经发送请求,尚未接收响应
    • 3,正在接收部分响应
    • 4,响应全部接收完毕
  • stateText () 响应码
  • stateText 响应文本 Ok代表成功

优缺点

优点

  1. 不刷新更新页面,提升用户体验
  2. 异步的 提升页面的加载速度
  3. 减轻服务器压力,实现浏览器渲染

缺点

  • 对搜索引擎不友好

文件上传

           var xhr = new XMLHttpRequest();
        // 建立xhr对象
        xhr.open("POST","https://www.520mg.com/ajax/file.php",true);
        // 打开http连接
        var data =  file.files[0];
        // 获取文件
        var fdata = new FormData();
        fdata.append("file",data);
        // 获取formData 要传递的表单文件
        // 监听xhr的加载事件
        xhr.upload.onprogress =function(e){
            // console.log(e);
             // 监听上传文件的进度
            console.log(e.loaded,e.total,Math.round(e.loaded/e.total*100)+"%")
            // e。loaded是已上传,e.total总文件大小
        }
         xhr.onload = function(){
               console.log(xhr);
            var res = JSON.parse(xhr.responseText);
            // 把json字符串转换为javascript对象
            if(res.error==0){
                var img = document.createElement("img");
                img.src ="https://www.520mg.com"+res.pic;
                img.width=100;
                // 创建一个图片 设置 src 与宽
                document.body.append(img);
                // 插入到页面中

            }

           }
        xhr.send(fdata);
        // 发送

ajax jquery

  • $.ajax()
  • $.get()
  • $.post()
  • 第三层
    • elem.load(xx) 加载xx内容 到elem元素
    • $.getScript(xxx) 加载xxx文件 执行js
    • $.getJSON(xx) 加载xx文件
  • 所有的jquery ajax方法 都支持三种写法
    $.getJSON(url,function(response,status.xhr){
         /* url 请求的地址
          function 请求成功回调函数
          response 请求响应的数据
          status 'successs'
          xhr.jquery的Promise 对象*/
      })

jquery ajax 相关函数调用方式

  1. 回调函数

     $.getJSON(url,function(res,status,xhr){})
    
     //2. promise 函数
    
     $.getJSON(url)
     .then(res=>{})
     .catch(err=>{})
    
     $.getJSON(url)
     .done(res=>{})
     .fail(err=>{})
     .always(res=>{})

    fetch

    get

     fetch(url)
     .then(res=>res.json{})
     .then()

    post

     fetch(url,{
         method:'POST',
         body:"name=xiaoming&age=18",
         headers:{'Content-Type':'application-x/www-form-urlencodeed'}
     })
     .then()
     .then

加载提示

$(document).ajaxStart(function(){})
// 开始ajax
$(document).ajaxStop(function(){})
// 结束ajax

$.ajax({})

  • url 请求的地址
  • method 请求的方法 GET | POST
  • dataType 返回数据类型 json jsonp text
  • jsonp 跨域回调方法 默认 callback
  • success 成功
  • error 失败
  • done 完成
  • fail 失败
  • beforeSend 发送前
  • compelete 发送完毕
  • Content-Type:'application/x-www-form-urlcoded'

$.get $.post

  • url
  • data(可选)
  • function(res,status,xhr)

jquery ajax Promise 对象

  • .then
  • .catch
  • .done
  • .fail
  • .always
  • status 状态 200
  • statusText ok
  • readyState 4
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Souleigh ✨ Souleigh ✨
2年前
理解 Javascript 中的 Async / Await
在本文中,我们将探讨async/await,对于每个Javascript开发人员来说,是异步编程的首选工具。如果您不熟悉javascript,请不要担心,本文将帮助您async/await从头开始理解。介绍async/await是javascript中的一种模式,可使您的代码以同步方式执行,但又不影响javascript的异步行为。定义异步功能要定义一
Wesley13 Wesley13
2年前
java第五周
AJAX的工作原理及其工作原理:1.定义及工作原理  AJAXAsynchronousJavaScriptandXML(异步的JavaScript和XML)。AJAX不是新的编程语言,而是一种使用现有标准的新方法。AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。  AJAX是一种用于
Stella981 Stella981
2年前
AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)
1、什么是AjaxAjax是异步Javascript和XML(AsynchronousJavaScriptandXML)的英文缩写。"Ajax"这个名词的发明人是JesseJamesGarrett,而大力推广并且使Ajax技术炙手可热的是Google。Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求。
Wesley13 Wesley13
2年前
IO模型详解及应用
如何阅读这篇文章顺序1.1:了解同步异步和阻塞非阻塞    1.11:同步异步    1.12:阻塞非阻塞1.2:了解一次read操作需要的步骤1.3:五种模型1.1:I/O模型中的同步异步,阻塞非阻塞:1.11:同步和异步:synchronous,asyncronous
Stella981 Stella981
2年前
AJAX与Django
AJAX什么是AJAX?AJAX不是JavaScript的规范,它的缩写:AsynchronousJavaScriptandXML,意思就是用JavaScript执行异步网络请求。提交任务之后,不原地等待,直接执行下一行代码,任务的返回通过回调机制。局部刷新,不整体刷新,而是界面莫个地方局部刷新AJAX原理
Stella981 Stella981
2年前
Django的日常
\toc\Django的日常AJAXAJAX简介首先AJAX是一种无需重新加载整个网页的前提下,能够更新部分网页的技术,他并不是一种新的编程语言,而是一种使用现有标准的新方法,是基于原生JavaScript开发的,他可以用于创建快速动态网页.AJAX最大的特点就是局部刷新以及异步提交,局部刷新
Stella981 Stella981
2年前
JavaScript同步、异步及事件循环
同步、异步JS是单线程的,每次只能做一件事情。像以下这种情况,代码会按顺序执行,这个就叫同步。console.log(1);console.log(2);console.log(3);以下代码会输出2、3、1,像这种不按顺序执行的,或者说代码执行中间有时间间隙的,叫异步。setTimeout((
Stella981 Stella981
2年前
Netty学习之IO模型
目录1.1同步、异步、阻塞、非阻塞  同步VS异步    同步    异步  阻塞VS非阻塞    阻塞    非阻塞  举例    1)同步阻塞    2)同步非阻塞    3)异步阻塞    4)异步非阻塞1.2Li
Stella981 Stella981
2年前
Ajax异步请求
Ajax即"AsynchronousJavascriptAndXML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax异步JavaScript和XML(标准通用标记语言的子集)。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况