原生js实现ajax方法(超简单)

yizhihongxing

下面是“原生js实现ajax方法(超简单)”的完整攻略。

步骤1:创建XMLHttpRequest对象

在JavaScript中要使用Ajax发送HTTP请求,必须先创建一个XMLHttpRequest对象。该对象提供了向Web服务器发送请求和接收响应的方法。

创建XMLHttpRequest对象:

let xmlhttp;
if (window.XMLHttpRequest){
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}else{
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

步骤2:设置请求参数

在发送Ajax请求之前,要设置请求参数和响应方式。

设置请求参数:

xmlhttp.open("GET","/ajax/test1.txt",true);
xmlhttp.send();

如果是POST请求,则需要设置请求头Content-Type和请求体数据:

xmlhttp.open("POST","/ajax/test1.txt",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name=John&age=18");

步骤3:处理响应结果

当Ajax请求发送后,服务器响应会触发xmlhttp对象的readystatechange事件。我们可以通过该事件来处理服务器返回的响应数据。

完整的Ajax请求:

let xmlhttp;
if (window.XMLHttpRequest){
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}else{
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
}

xmlhttp.open("GET","/ajax/test1.txt",true);
xmlhttp.send();

以上代码会将服务器返回的响应数据放入id为“myDiv”的元素中。

另外,Ajax请求是异步的,即浏览器不会等待服务器响应即可继续执行后面的代码。

示例1:Ajax请求获取JSON数据

以下示例通过Ajax请求获取JSON数据并将其渲染到页面上。

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Ajax请求获取JSON数据</title>
</head>
<body>
    <ul id="users"></ul>
    <script src="ajax.js"></script>
</body>
</html>

Ajax代码:

let xmlhttp;
if (window.XMLHttpRequest){
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}else{
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        let users = JSON.parse(xmlhttp.responseText);
        let html = '';
        for (let i = 0; i < users.length; i++) {
            let user = users[i];
            html += '<li>' + user.name + ': ' + user.age + '</li>';
        }
        document.getElementById('users').innerHTML = html;
    }
}

xmlhttp.open('GET', 'users.json', true);
xmlhttp.send();

示例2:Ajax提交表单数据

以下示例通过Ajax提交表单数据,实现无刷新提交,并将服务器返回的结果渲染到页面上。

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Ajax提交表单数据</title>
</head>
<body>
    <form id="myForm">
        <input type="text" name="username" placeholder="请输入用户名">
        <input type="password" name="password" placeholder="请输入密码">
        <button type="submit">登录</button>
    </form>
    <div id="result"></div>
    <script src="ajax.js"></script>
</body>
</html>

Ajax代码:

let form = document.getElementById('myForm');
form.addEventListener('submit', function(e){
    e.preventDefault();
    let xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            document.getElementById('result').innerHTML = xhr.responseText;
        }
    };
    xhr.open('POST', 'login.php', true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    let data = new FormData(form);
    let params = [];
    for (let pair of data.entries()) {
        params.push(pair[0] + '=' + pair[1]);
    }
    xhr.send(params.join('&'));
});

注意事项:

  1. 使用Ajax请求时,需要设置请求头Content-Type和请求体数据,如果不设置Content-Type,浏览器会默认设置为application/x-www-form-urlencoded,导致Server端无法解析接收数据。而formData的数据格式并不是经典的key-value格式,而是multipart/Form-data格式,针对这种数据格式,php有处理函数。
$_POST = array(
    'username' => 'John',
    'password' => '123456'
);
  1. new FormData()方法允许我们把javascript的key-value对象转化为FormData对象,这个对象可以直接以post请求方式发送数据,不需要使用上文的方法把参数通过&拼接在url后传输。

好了,以上就是“原生js实现ajax方法(超简单)”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现ajax方法(超简单) - Python技术站

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

相关文章

  • asp.net下使用jQuery.AutoComplete完成仿淘宝商品搜索自动完成功能(改进了键盘上下选择体验)

    下面是详细讲解“asp.net下使用jQuery.AutoComplete完成仿淘宝商品搜索自动完成功能(改进了键盘上下选择体验)”的完整攻略。 第一步:引入jQuery和jQuery UI库 首先,我们需要在html页面中引入jQuery和jQuery UI库。这可以通过在head标签内添加如下代码来实现: <head> <script …

    JavaScript 2023年6月11日
    00
  • Sanic框架Cookies操作示例

    下面我来详细讲解一下“Sanic框架Cookies操作示例”的完整攻略。 一、什么是Cookies? 一般来说,Cookies是一个小型的文本文件,可以在客户端浏览器上存储一些简单的用户信息,比如登录状态、浏览历史、购物车信息等。 在Web开发中,Cookies经常被用来跟踪用户的行为,比如记录用户的喜好,让广告展示更精准;或者保存用户的登录状态,方便下次登…

    JavaScript 2023年6月11日
    00
  • JavaScript的DOM事件详解

    下面是JavaScript的DOM事件详解的完整攻略。 什么是DOM事件? DOM事件是指由DOM元素触发的事件,包括如下几种类型: 鼠标事件:click、mousedown、mousemove、mouseup、mouseover、mouseout、mouseenter、mouseleave等。 键盘事件:keydown、keypress、keyup等。 表…

    JavaScript 2023年6月10日
    00
  • JavaScript中Cookie的使用之如何设置失效时间

    设置Cookie的失效时间是JavaScript中Cookie使用的重要方面之一。下面是一些设置Cookie失效时间的步骤和示例说明。 1. 设置Cookie失效时间的方法 在JavaScript中,可以通过设置Cookie的expires属性来设置Cookie的失效时间。expires属性可以是一个日期对象或一个表示Cookie失效时间的字符串。 1.1 …

    JavaScript 2023年6月11日
    00
  • 详解js实时获取并显示当前时间的方法

    当我们开发网页时,有时需要在页面上显示当前的时间。下面是使用JavaScript实时获取并显示当前时间的三种方法。 方法1:使用setInterval()函数 setInterval()函数可以每隔一定时间间隔执行一次function中的代码。我们可以使用这个函数每秒钟更新时间。 <!DOCTYPE html> <html> <…

    JavaScript 2023年5月27日
    00
  • ES6新特性六:promise对象实例详解

    ES6新特性六:promise对象实例详解 Promise对象是ES6新增的一种异步编程解决方案,它解决了异步编程中回调函数嵌套过深、错误处理繁琐等问题。本文将详细介绍Promise对象的创建、状态、方法及使用。 Promise对象的创建 Promise对象是通过new关键字和Promise构造函数创建的,它接受一个函数作为参数,该函数有两个形参resolv…

    JavaScript 2023年6月11日
    00
  • Js参数RSA加密传输之jsencrypt.js的使用

    让我来给您详细讲解“Js参数RSA加密传输之jsencrypt.js的使用”的完整攻略。 什么是RSA加密 RSA加密是一种非对称加密,它的实现需要公钥和私钥两个因子。将消息加密使用的是公钥,而解密需要用到私钥,这样就可以防止信息被中间人截获。RSA加密算法常用于保护数据在传输的过程中不能被恶意拦截或窃取。在Web开发中,RSA加密常常用于加密用户的个人信息…

    JavaScript 2023年5月19日
    00
  • 28个JS验证函数收集

    下面是对“28个JS验证函数收集”的完整攻略的详细讲解。 1. 前言 在Web开发中,常常需要对用户输入的数据进行验证,避免用户输入不合法的数据导致应用程序的异常,而JavaScript是前端验证的绝佳工具。在实现验证功能时,不必每次都从头开始编写代码,可以参考已有的验证函数库,例如这篇文章介绍的“28个JS验证函数收集”。 2. 了解验证函数库 这份验证函…

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