简单聊一聊原生Ajax与JQuery Ajax

一、原生Ajax

什么是原生Ajax?

Ajax是Asynchronous JavaScript and XML的缩写,即异步的JavaScript和XML。AJAX 允许网页在不重新加载的情况下更新部分内容。原生Ajax是指使用JavaScript的XMLHttpRequest对象操作Web服务器执行异步数据交换(通常与JSON和XML数据格式一起使用)的技术。

原生Ajax的优点:

  • 原生Ajax无需安装任何插件和框架,开发成本较低;
  • 可以完全控制请求及响应的过程。

实现原生Ajax的关键步骤:

  1. 创建XMLHttpRequest对象:var xhr = new XMLHttpRequest();

  2. 设置请求参数:

xhr.open('GET', url, true);// 指定请求方式、请求地址、是否异步处理
xhr.onreadystatechange = function() {// readyState变化时的回调函数
    if(xhr.readyState === 4) {// 请求已完成
        if(xhr.status === 200) {// 请求成功
            // 处理响应的数据
        }else {// 请求失败
            console.error('Error:' + xhr.status);
        }
    }
}

// 设置请求头(默认情况下,原生AJAX不会自动设置请求头,如果需要设置请求头,在调用open()之后但在调用send()之前设置)
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"); 
  1. 发送请求:xhr.send(data);

示例1:原生Ajax获取JSON格式的数据

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>原生AJAX获取JSON格式的数据</title>
<script>
function getJSON() {
    const xhr = new XMLHttpRequest();
    xhr.open('GET', 'data.json', true);
    xhr.onreadystatechange = function(e) {
        if(xhr.readyState === 4) {
            if(xhr.status === 200) {
                const data = JSON.parse(xhr.responseText);
                console.log(data);
            }else {
                console.error(xhr.statusText);
            }
        }        
    }
    xhr.send();
}
</script>
</head>
<body>
<button onclick="getJSON()">获取数据</button>
</body>
</html>

示例2:原生Ajax上传文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>原生AJAX上传文件</title>
</head>
<body>
<h3>上传文件:</h3>
<form enctype="multipart/form-data">
    <input type="file" name="file" id="file">
    <button onclick="uploadFile()">上传</button>
</form>
<div id="result"></div>
<script>
function uploadFile() {
    const xhr = new XMLHttpRequest();
    const formData = new FormData();//构造表单数据对象
    const file = document.getElementById("file").files[0];//获取上传的文件
    formData.append('file', file);
    xhr.open('POST', 'upload.php', true);
    xhr.onreadystatechange = function(e) {
        if(xhr.readyState === 4) {
            if(xhr.status === 200) {
                const data = xhr.responseText;
                document.getElementById('result').innerHTML = data;
            }else {
                console.error(xhr.statusText);
            }
        }        
    }
    xhr.send(formData);//发送表单数据
}
</script>
</body>
</html>

二、JQuery Ajax

什么是JQuery Ajax?

JQuery Ajax是基于JQuery的AJAX模块,可以通过JQuery的方法轻松地发送Ajax请求。

JQuery Ajax的优点:

  • 简单易用,代码量少;
  • 隐藏了浏览器兼容性问题和异步调用的复杂性;
  • 可以使用Promise等功能,简化回调函数的编写。

实现JQuery Ajax的关键步骤:

  1. 选择请求方式:

  2. $.get(url, data, success(data,status,xhr), dataType)

  3. $.post(url, data, success(data,status,xhr), dataType)
  4. $.ajax(settings)

  5. 设置请求参数:

  6. url: 待请求的地址
  7. data: 待发送Key/value参数,可直接发送对象,jQuery会自动将对象序列化为对象字符串格式发送到服务器上
  8. success(data, textStatus, jqXHR): 请求成功后的回调函数
  9. dataType: 返回数据类型,支持xml、json、script、或者html,默认自动判断(经常用json)

示例3:JQuery Ajax获取JSON格式的数据

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JQuery AJAX获取JSON格式的数据</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
$.getJSON('data.json', function(data) {
    console.log(data);
});
</script>
</head>
<body>
</body>
</html>

示例4:JQuery Ajax上传文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JQuery AJAX上传文件</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<h3>上传文件:</h3>
<form enctype="multipart/form-data">
    <input type="file" name="file" id="file">
    <button id="uploadBtn">上传</button>
</form>
<div id="result"></div>
<script>
$(function(){
    $("#uploadBtn").click(function(){
        var formData = new FormData();
        var file = $('#file')[0].files[0];
        formData.append("file", file);
        $.ajax({
            url: 'upload.php',
            type: 'POST',
            data: formData,
            contentType: false,//不要设置成multipart/form-data,因为这样jquery会帮我们生成一个boundary,但是服务器无法解析
            processData: false,// 不需要对数据做任何处理
            success:function(data) {
                $('#result').html(data);
            },
            error:function(statusText) {
                console.log(statusText);
            }
        });
    });
})
</script>
</body>
</html>

以上是"简单聊一聊原生Ajax与JQuery Ajax"的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单聊一聊原生Ajax与JQuery Ajax - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Javascript图片上传前的本地预览实例

    下面是“Javascript图片上传前的本地预览实例”的完整攻略。 知识储备 在开始我们的实例之前,需要对以下知识进行了解: 用户通过 <input type=”file”> 选择本地图片,设置 onchange 事件来获取图片的文件信息; 利用 FileReader 对文件进行读取,获取读取后的文件对象; 将文件对象转化为图片的 url 地址,…

    JavaScript 2023年6月11日
    00
  • javascript中xml操作实现代码

    下面是关于JavaScript中XML操作实现代码的完整攻略。 XML简介 XML是一种被广泛用于Web应用程序中的标记式语言,用于存储和传输数据。XML有很多好处,包括易于阅读和理解,易于自定义,可扩展性强等。 基础知识 在JavaScript中,我们可以使用XMLDOM对象处理XML文档。XMLDOM是一个跨平台的API,可用于处理XML文档。XMLDO…

    JavaScript 2023年5月27日
    00
  • javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历

    一、javascript浏览器判断 要在javascript中进行浏览器判断,可以通过navigator对象获取浏览器的信息。常用的属性包括: navigator.userAgent:获取完整的userAgent字符串; navigator.appName:获取浏览器的名称; navigator.appVersion:获取浏览器的版本号; navigator…

    JavaScript 2023年6月11日
    00
  • asp.net下使用AjaxPro实现二级联动代码

    下面我来详细讲解“ASP.NET下使用AjaxPro实现二级联动代码”的完整攻略。 一、准备工作 在使用AjaxPro之前,我们需要在项目文件夹中引用它的JavaScript压缩包,同时还需要在网页的头部区域加入如下代码: <script src="ajaxpro.js"></script> 二、服务器端编码 1.…

    JavaScript 2023年6月11日
    00
  • 基于JavaScript实现前端文件的断点续传

    首先,前端实现文件的上传需要使用HTML5新增的文件上传API,即File和FileReader对象。而实现文件的断点续传可以通过Ajax方式向后台传递文件分块,后台接口则可以将分块数据合并成完整的文件。 以下是一个完整的前端基于JavaScript实现文件的断点续传的攻略: 1. HTML页面设计 在HTML页面中需要添加一个文件上传的表单,和一个进度条用…

    JavaScript 2023年5月27日
    00
  • 使用JavaScript在html文档内添加新的元素节点

    使用JavaScript可以在html文档内添加新的元素节点,具体的步骤如下: 选中你想要添加元素的父节点 const parent = document.querySelector(‘#parent-id’); 这里假设你已经通过HTML的id属性找到了父节点,如果你不清楚可以查看querySelector的文档。 创建新节点 const newNode …

    JavaScript 2023年6月10日
    00
  • bigScreen大屏配置选项无法和画布中心的展示联动解决

    要解决bigScreen大屏配置选项无法和画布中心的展示联动,有以下几个步骤: 1. 设置bigScreen配置选项 首先,在BigScreen的配置对象中,要设置相关的配置选项。具体来说,需要设置以下两个参数: scale: 设定画布的初始缩放比例,可以自行设置,建议在0.5-2之间取值。 offset: 设定画布的初始偏移量,以像素值进行设置,可以自行设…

    JavaScript 2023年6月11日
    00
  • 原生JavaScript实现幻灯片效果

    下面我会详细讲解一下“原生JavaScript实现幻灯片效果”的完整攻略。 1. 确定需求 在开始编写代码之前,我们需要考虑一下实现幻灯片效果的具体需求,例如: 幻灯片的图片数量 幻灯片每张图片的宽高 幻灯片切换的方式 幻灯片的自动播放和手动控制 2. 示范HTML结构 接下来,我们先来示范一下实现幻灯片效果所需要的HTML结构。代码如下: <div …

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部