美文网首页
前端学习笔记—Ajax

前端学习笔记—Ajax

作者: 木溪bo | 来源:发表于2024-03-01 19:09 被阅读0次

Ajax(Asynchronous JavaScript and XML):是指一种创建交互式的网页开发技术。
Ajax不是一种单一的技术,是多个技术的组合。它是把JavaScript、CSS、DOM和HTML结合起来的一种编程思路和方法的统称。Ajax技术颠覆了以往界面像服务端请求数据,需要重新刷新整个页面对这个数据做出展示的行为;只需要发出异步请求,等请求结果返回客户端后,在回调函数内对需要改变的部分界面进行数据绑定和显示,做到只需要刷新部分页面区域的功能而无需每次刷新整个页面,现在都是最常见的基本操作了。

Ajax的技术核心是XMLHttpRequest对象,而XMLHttpRequest说白了就是一个网络框架。Ajax的含义是使用JavaScript通过XMLHttpRequest对象进行与服务器的通信,返回xml,json,html或者其他任何一种文本格式的数据,然后对数据进行处理,异步显示界面等行为的一种编程操作。

1、网络请求

原生js处理ajax网络请求.png
jQuery处理ajax网络请求.png
//原生JavaScript  ajax网络请求
  var usernameStr = '超人来了';
        var xhrSend = new XMLHttpRequest();
        xhrSend.open('POST', 'http://localhost:8000/muxiInfo', true);
        xhrSend.setRequestHeader('Content-Type', 'application/json');
        xhrSend.send(JSON.stringify({ UserName: usernameStr }));
    //----------同步写法---onload
        xhrSend.onload = function () {
            if (xhrSend.status == 200) {
                console.log('--sendTest-接收:' + xhrSend.responseText);
                var data = JSON.parse(xhrSend.responseText);
                httpShow.innerHTML = data.message;
            } else {
                httpShow.innerHTML = '异常了呢';
            }
        };
   //-----------异步写法----onreadystatechange
  xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                isSending = false;
                if (xhr.status == 200) {
                   console.log('--sendTest-接收:' + xhrSend.responseText);
                    httpShow.innerHTML = xhr.response;
                } else {
                    httpShow.innerHTML = '请求成功,但是返回异常了呢';
                }
            } else {
                //其他状态,时刻监听
            }
        }
ajax1.png
//jQuery框架  ajax网络请求
 $.ajax({
            url: 'http://localhost:8000/muxiInfo',
            //请求参数
            data: { UserName: '李牛Ajax' },
            //请求类型POST/GET,不区分大小写
            type: 'POST',
            //发送server的参数类型
            contentType: 'application/json',
            //期望server响应返回的结果类型
            dataType: 'json',
            //是否异步请求,默认true
            async:true,
           //超时时间
            timeout: 2000,
            //成功回调
            success: function (data) {
                console.log(data);
                httpShow.innerHTML = data.message;
            },
            //失败回调
            error: function (e) {
                httpShow.innerHTML = e
            }
        })

2、跨域问题解决方案:

  • 方案1:原生方法实现,利用<script>标签,使用程序员自己实现的巧妙方法“JSONP”跨域,只能处理GET请求


script script image.png
  • 方案2:使用jQuery请求实现

jQuery跨域的原理也是通过外链 <script> 来实现的,然后在通过回调函数加上回调函数的参数来实现真正的跨域,默认callback函数名,可自定义。
jQuery 在每次跨域发送请求时都会有callback这个参数,其实这个参数的值就是回调函数名称,所以,服务器端在发送json数据时,应该把这个参数放到前面并加上括号,这个参数的值往往是随机生成的,如:jQuery1294734708682,同时也可以通过 $.ajax 方法设置 jsonpcallback 方法的名称。明白了原理后,服务器端应该这样发送数据:

1. jsonp、jsonpcallback,jsonp跨域时可以自定义的两个参数
2. jsonp: 回掉函数名的参数名,默认callback,服务端通过它来获取到回掉函数名
3. jsonpCallback: 回掉函数名,默认jquery自动生成

//前端发送格式
如:http://xxx.html?jsonp=jsonpCallback&xxxx&xxx,默认:http://xxx.html?callback=jQuery13213_564964&xxxx&xxx

//服务端发送格式
string message = "jQuery13213_564964({\"userid\":0,\"username\":\"null\"})";//服务端返回到前端js引擎解析,调用jQuery13213_564964()函数
jq jq
  • 设置Cors请求头


    Cors
Cors
  • 使用WebSocket通信


    image.png
  • 设置代理服务器:通过同一域名端口下设置代理服务器去请求目标服务器返回数据

相关文章

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    前端学习中,今天学习了blue老师视频里面的ajax,仅作为自己学习的记录 ajax(Asynchronous J...

  • 前端笔记-ajax

    零:什么是ajax? 缩写的意思是:Asynchronous JavaScript and XML (异步的 Ja...

  • 前端学习笔记二十-Ajax编程

    一、Ajax 基础 传统网站中存在的问题 网速慢的情况下,页面加载时间长,用户只能等待 表单提交后,如果一项内容不...

  • ajax跨域jsonp,后台使用java

    前端ajax代码: //进行ajax请求 $.ajax({ url:'http:/uploadPage/get...

  • Ajax Axios

    关于Ajax兼容性问题 前端原生Ajax(get方式),后端使用node.js 前后端代码: 前端原生Ajax(p...

  • 2018-06-01

    # Ajax标签(空格分隔): 笔记整理---[TOC]### 从输入网址开始:- 在学习ajax之前,你应该先了...

  • Django 八

    目录 1.ajax概念 2.ajax计算器 后端 前端 3.ajax发送其他请求 3.1.登录功能前端 3.2 登...

  • 前端学习之 Ajax

    PHP基础 header header() 用来向客户端(浏览器)发送报头 PHP 表单 PHP_GET数据获取在...

  • java学习和就业方向

    1、java学习路线(基础(面向对象、集合)、前端(ajax、传值)、框架(ssm、ssh、springmvc)、...

网友评论

      本文标题:前端学习笔记—Ajax

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