返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript的异步ajax详解
  • 310
分享到

JavaScript的异步ajax详解

2024-04-02 19:04:59 310人浏览 薄情痞子
摘要

目录一级目录二级目录三级目录Http协议请求消息结构请求方法响应头信息响应状态码ajaxAJAX = Asynchronous javascript and XML(异步的 Java

一级目录

二级目录

三级目录

1.掌握HTTP协议和规则

2.掌握HTTP请求和响应的规则 重点

3.了解HTTP响应头信息

4.了解HTTP状态码

5.掌握AJAX开发中使用的全过程 重点

6.掌握JavaScript JSON的数据结构和使用方法 重点

7.掌握JavaScript XML数据结构和使用方法

8.掌握AJAX获取JSON格式数据的方法

9.掌握JSON格式转换的方法

HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide WEB服务器传输超文本到本地浏览器的传送协议。。

HTTP是一个基于tcp/IP通信协议来传递数据(html 文件, 图片文件, 查询结果等)

请求消息结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

  • 请求行(request line)
  • 请求头部(header)
  • 空行
  • 请求数据

下面给出了请求报文的一般格式:

GET / HTTP/1.1 
Host: www.csdn.net 
Connection: keep-alive 
Cache-Control: max-age=0 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*
                    if(request.readyState == 4 && request.status == 200) {
                        
                        callback(JSON.parse(request.responseText));
                    }
                };
            }
        }
        load('weather.json', true, function(text) {
            document.body.innerText = '当前气温:' + text.data.wendu + '°';
        });
    </script>
</html>

weather.json

{
    "status": 200,
    "data": {
        "wendu": "29",
        "ganmao": "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。",
        "forecast": [
            {
                "fengxiang": "南风",
                "fengli": "3-4级",
                "high": "高温 32℃",
                "type": "多云",
                "low": "低温 17℃",
                "date": "16日星期二"
            },
            {
                "fengxiang": "南风",
                "fengli": "微风级",
                "high": "高温 34℃",
                "type": "晴",
                "low": "低温 19℃",
                "date": "17日星期三"
            },
            {
                "fengxiang": "南风",
                "fengli": "微风级",
                "high": "高温 35℃",
                "type": "晴",
                "low": "低温 22℃",
                "date": "18日星期四"
            },
            {
                "fengxiang": "南风",
                "fengli": "微风级",
                "high": "高温 35℃",
                "type": "多云",
                "low": "低温 22℃",
                "date": "19日星期五"
            },
            {
                "fengxiang": "南风",
                "fengli": "3-4级",
                "high": "高温 34℃",
                "type": "晴",
                "low": "低温 21℃",
                "date": "20日星期六"
            }
        ],
        "yesterday": {
            "fl": "微风",
            "fx": "南风",
            "high": "高温 28℃",
            "type": "晴",
            "low": "低温 15℃",
            "date": "15日星期一"
        },
        "aqi": "72",
        "city": "北京"
    },
    "message": "OK"
}

效果展示

在这里插入图片描述

XML

XML 指可扩展标记语言(eXtensible Markup Language)。XML 被设计用来传输和存储数据。

XML 语法规则

  • XML 元素名和HTML不一样,没有固定的单词,需要自定义。
  • XML 必须包含根元素,它是所有其他元素的父元素,根元素标签名自定义。
  • XML 所有的元素都必须有一个关闭标签
  • XML 标签必须正确嵌套
  • XML 属性值必须加引号
  • XML 标签对大小写敏感。标签 <Letter> 与标签 <letter> 是不同的

XML 声明文件的可选部分,如果存在需要放在文档的第一行,如下所示:

<?xml version="1.0" encoding="utf-8"?>

如:

<?xml version="1.0" encoding="utf-8"?>
<bookstore>
    <book cateGory="CHILDREN">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

XML 解析

下面的代码片段把 XML 字符串解析到 XML DOM 对象中

案例02

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		txt = '<bookstore>'+
				    '<book category="CHILDREN">'+
				        '<title>Harry Potter</title>'+
				        '<author>J K. Rowling</author>'+
				        '<year>2005</year>'+
				        '<price>29.99</price>'+
				    '</book>'+
				    '<book category="WEB">'+
				        '<title>Learning XML</title>'+
				        '<author>Erik T. Ray</author>'+
				        '<year>2003</year>'+
				        '<price>39.95</price>'+
				    '</book>'+
				'</bookstore>';
				
		if(window.DOMParser) {
			parser = new DOMParser();
			xmlDoc = parser.parseFromString(txt, "text/xml");
		} else {// Internet Explorer
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = false;
			xmlDoc.loadXML(txt);
		}
		// xmlDoc 等价于 document
		xmlDoc.querySelectorAll('book').forEach(function(e,i){
			document.write(e.innerHTML);
			console.log(e.children)
		})
	</script>
</html>

效果展示

在这里插入图片描述

JSON

JSON: JavaScript Object Notation(JavaScript 对象表示法)。JSON 是存储和交换文本信息(传输)的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。

JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 大括号保存对象
  • 中括号保存数组

JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • Null

如:

var json = {
    'array':[1,'你好',true],
    'number':123,
    'string':'hello',
    'boolean':true,
    'object':{
        'name':'张三',
        'pswd':123456
    }
}

JSON 文件

  • JSON 文件的文件类型是 “.json”
  • JSON 文本的 MIME 类型是 “application/json”

JSON 对象

可以使用点号(.)来访问对象的值,也可以使用中括号([])来访问对象的值

案例03:获取

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		var json = {
			'array':[1,'你好',true],
			'number':123,
			'string':'hello',
			'boolean':true,
			'object':{
				'name':'张三',
				'pswd':123456
			}
		}
		document.write(json.string);
		document.write(json['number']);
	</script>
</html>

效果展示

在这里插入图片描述

案例04:删除对象属性

可以使用 delete 关键字来删除 JSON 对象的属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		var json = {
			'array': [1, '你好', true],
			'number': 123,
			'string': 'hello',
			'boolean': true,
			'object': {
				'name': '张三',
				'pswd': 123456
			}
		}
		delete json.array;
		delete json['object'];
		for(i in json) {
			document.write(json[i]);
		}
	</script>
</html>

效果展示

在这里插入图片描述

JSON文件读取

var request = null;
if(window.XMLHttpRequest) {
	request = new XMLHttpRequest();
} else if(window.ActiveXObject) {
	request = new window.ActiveXObject();
} else {
	request("您的浏览器版本过低");
}
if(request != null) {
	request.open(method, file, true);
	request.send(null);
	request.onreadystatechange = function() {
		if(request.readyState == 4 && request.status == 200) {
			//console.log(request.responseText)
			callback(JSON.parse(request.responseText));
		}
	};
}

JSON解析

JSON.parse():JSON字符串转JavaScript 对象

JSON.parse(text[, function])

参数说明:

  • text:必需,一个有效的 JSON 字符串。
  • function(key,value): 可选,一个转换结果的函数,将为对象的每个成员调用此函数。

案例05

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		var json = '{"number":123,"string":"hello","boolean":true}';
		var obj = JSON.parse(json,function(key,value){
			if (key == "number") {
				return 789;
			}
			return value;//这句不能少,处理不满足if的情况的其他数据
		});
		document.write(obj.number);
		document.write(obj['string']);
	</script>
</html>

效果展示

在这里插入图片描述

JSONP

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

服务端JSONP格式数据

如客户想访问 : http://www.baidu.com/try/ajax/jsonp.PHP?jsonp=callbackFunction。假设客户期望返回JSON数据:["customername1","customername2"]。真正返回到客户端的数据显示为: callbackFunction(["customername1","customername2"])

服务端文件jsonp.php代码为:

header('Content-type: application/json');
//获取回调函数名
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);
//json数据
$json_data = '["customername1","customername2"]';
//输出jsonp格式的数据
echo $jsoncallback . "(" . $json_data . ")";

客户端实现 callbackFunction 函数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JSONP 实例</title>
	</head>
	<body>
		<div id="divCustomers"></div>
		<script type="text/javascript">
			function callbackFunction(result, methodName) {
				var html = '<ul>';
				for(var i = 0; i < result.length; i++) {
					html += '<li>' + result[i] + '</li>';
				}
				html += '</ul>';
				document.getElementById('divCustomers').innerHTML = html;
			}
		</script>
		<script type="text/javascript" src="http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script>
	</body>
</html>

jQuery 使用 JSONP

以上代码可以使用 jQuery 代码实例:

<html>
	<head>
		<meta charset="utf-8">
		<title>JSONP 实例</title>
		<script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>
	</head>
	<body>
		<div id="divCustomers"></div>
	</body>
    <script>
        $.getJSON("http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=?", function(data) {
            var html = '<ul>';
            for(var i = 0; i < data.length; i++) {
                html += '<li>' + data[i] + '</li>';
            }
            html += '</ul>';
            $('#divCustomers').html(html);
        });
    </script>
</html>

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

--结束END--

本文标题: JavaScript的异步ajax详解

本文链接: https://lsjlt.com/news/141309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript的异步ajax详解
    目录一级目录二级目录三级目录HTTP协议请求消息结构请求方法响应头信息响应状态码AJAXAJAX = Asynchronous JavaScript and XML(异步的 Java...
    99+
    2024-04-02
  • 详解JavaScript实现异步Ajax
    目录一、什么是 AJAX ?1、AJAX是基于现有的Internet标准2、AJAX 工作原理二、AJAX - 创建 XMLHttpRequest 对象1、XMLHttpReques...
    99+
    2024-04-02
  • JavaScript Generator异步过度的实现详解
    目录异步过渡方案Generator1. Generator 的使用2. Generator 函数的执行2.1 yield 关键字2.2 next 方法与 Iterator 接口3. ...
    99+
    2022-11-13
    JavaScript Generator异步过度 JavaScript Generator
  • jquery中的ajax同步和异步的详细介绍
    本篇内容主要讲解“jquery中的ajax同步和异步的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery中的ajax同步和异步的详细介绍”吧!之...
    99+
    2024-04-02
  • JavaScript同步与异步任务问题详解
    目录js会出现异步问题场景标题延时操作开关涵数jQuery异步请求设置为同步请求js会出现异步问题场景 延时操作数据请求同异步promise 异步回调涵数(最常见多内置涵数支持接收回...
    99+
    2024-04-02
  • JavaScript异步编程之Promise的初步使用详解
    1. 概述 Promise对象是ES6提出的的异步编程的规范。说到异步编程,就不得不说说同步和异步这两个概念。 从字面意思理解同步编程的话,似乎指的是两个任务同步运行,如果这样理解就...
    99+
    2024-04-02
  • JavaScript AJAX 异步编程:打破传统的枷锁
    AJAX 的工作原理 AJAX 是一种客户端技术,允许 Web 应用程序与服务器进行异步通信,而无需重新加载整个页面。它通过在后台发送和接收数据来实现这一点,同时保持与用户的交互。 AJAX 的优点 响应迅速:AJAX 允许应用程序在不...
    99+
    2024-04-02
  • SpringBoot采用AJAX实现异步发布帖子详解
    目录1. AJAX2. 功能描述3. 开发流程4. 引入AJAX依赖5. Util6. Mapper7. Service8. Controller9. JavaScript1. AJ...
    99+
    2024-04-02
  • JavaScript异步编程中async函数详解
    目录async函数await 表达式async使用形式async读取文件async发送AJAX请求与生成器(Generator)相比async函数 async函数的返回值为 prom...
    99+
    2022-11-13
    JavaScript async JavaScript异步编程 JS async
  • ajax同步异步指的是什么
    本篇内容主要讲解“ajax同步异步指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax同步异步指的是什么”吧! ajax...
    99+
    2024-04-02
  • AJAX乱码与异步同步以及封装jQuery库实现步骤详解
    目录1、AJAX乱码问题2、AJAX的异步与同步3、AJAX代码封装4、手动封装一个jQuery库1、AJAX乱码问题 (1)发送ajax get 或者 ajax post请求时下面...
    99+
    2023-01-13
    AJAX乱码 AJAX异步同步 AJAX封装jQuery库
  • JavaScript的单线程和异步详细
    目录一、任务队列二、借以解释几个容易困惑的问题1、setTimeout(f1,0)是什么鬼2、Ajax请求是否异步3、界面渲染线程是单独开辟的线程三、如何利用浏览器的异步机制四、异步...
    99+
    2024-04-02
  • JavaScript中从setTimeout与setInterval到AJAX异步的示例分析
    这篇文章主要介绍JavaScript中从setTimeout与setInterval到AJAX异步的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!setTimeout与set...
    99+
    2024-04-02
  • JavaScript手写异步加法asyncAdd方法详解
    目录前言分析 asyncAdd直观的基本要求隐藏的考察点 — setTimeout & cb隐藏的考察点 — async & await实现 ...
    99+
    2024-04-02
  • JavaScript异步怎么理解
    本篇内容主要讲解“JavaScript异步怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript异步怎么理解”吧! 导读 首先,要知道J...
    99+
    2024-04-02
  • Django+Ajax异步刷新/定时自动刷新实例详解
    目录前言一、Django是什么?二、Ajax异步刷新1.jQuery语法下的Ajax运用2.定时刷新页面的样例3.展示效果总结前言 分享一下最近在学习Django过程中,遇到和解决的...
    99+
    2024-04-02
  • 如何理解ajax中的async属性值同步和异步及同步和异步区别
    这篇文章给大家介绍如何理解ajax中的async属性值同步和异步及同步和异步区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。jquery中ajax方法有个属性async用于控制同步和...
    99+
    2024-04-02
  • log4j2异步Logger(详解)
    1 异步Logger的意义之前的日志框架基本都实现了AsyncAppender,被证明对性能的提升作用非常明显。在log4j2日志框架中,增加了对Logger的异步实现。那么这一步的解耦,意义何在呢?如图,按我目前的理解:异步Logger是...
    99+
    2023-05-30
    log4j2 异步 logger
  • Ajax中同步和异步的示例分析
    小编给大家分享一下Ajax中同步和异步的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!通过ajax向后台发送和接收数据时...
    99+
    2024-04-02
  • ajax同步和异步的区别有哪些
    这篇文章主要讲解了“ajax同步和异步的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ajax同步和异步的区别有哪些”吧! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作