Ajax原理及不同场景下的应用

Ajax原理及不同场景下的应用

1 概念

ajax是Asynchronous Javascript and xml(异步的js和xml)的缩写。

同步与异步:客户端和服务器段的通信基础上。

同步:客户端发请求,等待,服务器端响应,返回给客户端,客户端接收到了,在继续做其他操作。即客户端必须等待服务器的响应,且在这期间无法做其他操作,直至响应接受到。

异步:客户端发请求,不需要等待,服务器端响应,返回给客户端。即客户端不需要等待服务器的响应,且在这期间可以做其他操作。

2 实质

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。用于提升效率和体验。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

3 原生的JS实现方式
//1 创建核心对象
var xmlhttp;
xmlhttp=new XMLHttpRequest();
//2 建立连接 ("请求方式(post,get)","url","同步请求false/异步请求true")
xmlhttp.open("GET","localhost:8080/api/adduser?uid=8","true");
//3 发送请求(get方式参数在url后面拼接,send后面为空参。post方式请求参数在send方法中定义)
xmlhttp.send();
//4 接受并且处理响应的结果;在服务器响应成功时候获取。获取响应后的数据
//当xmlhttp对象的就绪状态改变时,就会触发onreadystatechange函数。
//0-4的变化状态:0请求未初始化,1建立服务器连接,2请求被接受,3请求处理中,4请求完成,响应就绪
//2种状态码:200:页面响应正常。404页面找不到。
xmlhttp.onreadystatechange=function (ev) {
    //判断是否就绪,响应是否成功
             if (xmlhttp.readyState==4&&xmlhttp.status==200){
                 //获取服务器的响应结果
                 var responseText = xmlhttp.responseText;
                 alert(responseText)
                 document.getElementById("t1").innerHTML=responseText;
             }
           }

4 JQuery实现ajax方式
4.1 $.ajax-通用方式

语法规则:$.ajax({key:value形式的键值对})

$.ajax({
    url:"localhost:8080/api/adduser",//请求地址
    type:"post",//请求方式
    data:{"username":"jake","age":"23"},//数据格式
    success:function (data) {
        alert(data);
    },//响应成功后,会调用的函数
    error:function () {
        alert("出粗略")
    },//请求响应出错,会执行的回调函数
    dataType:"text"//接受的返回的数据格式
});

4.2 . g e t ( ) / .get()/ .get()/.post()的get/post请求简写方式

语法规则:$.get({value形式的值});只需要传值了.

. g e t / .get/ .get/.post(url,{data},[callback function],[type]),
路径—参数信息—回调函数—响应结果的数据类型

$.get/$.post("localhost:8080/api/adduser",{"username":"getajax"},function (data) {
    alert(data);},"text")


5 Vue.js中实现ajax方式

1 首先在vue前端配置代理,在根目录下的config/index.js中的dev标签下添加:

	// Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
          '/api':{
            target:'http://localhost:8080',
            changeOrigin: true,
            pathRewrite:{
              '^/api': ''
            }
          }
        },

2 然后在src目录下面新建一个文件夹api(名称随意),在文件夹中新建一个axios.js的文件。代码如下:

import Vue from 'vue'
import axios from 'axios';
Vue.prototype.axios = axios;
axios.defaults.baseURL ='http://localhost:8080/';  //配置请求地址

3 在src/main.js中设置反向代理,并且注册axios,用于发送数据

// 设置反向代理,前端请求默认发送到 http://localhost:8443/api
var axios=require('axios')
axios.defaults.baseURL = 'http://localhost:8080/api'
// 全局注册,之后可在其他组件中通过 this.$axios 发送数据
Vue.prototype.$axios = axios

4 在页面中的使用,发送post请求。

getreview(){
          this.$axios.post('/getreview',//url地址
            {fid:this.$store.getters.clickedFilminfo.fid}//传递的参数
            ).then(res=>{//then里面写上接收的结果,以及需要做的操作
            console.log(res.data)
            this.otheruserreview=res.data;
          }).catch(err=>{console.log(err)})//捕捉异常
        },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值