复习Ajax

2023-11-19

ajax简介

ajax全称为Asynchronous JavaScript And XML 就是异步的js和XML,ajax不是一个新的编程语言,而是一种将现有的技术组合在一起使用的新方式

ajax特点

通过ajax可以在浏览器中向服务器发起异步请求,允许用户通过一些事件来实现局部页面更新,最大特点就是可以通过无刷新获取新的数据

ajax缺点

没有历史记录,不能回退,存在跨域问题(同源策略);对seo优化不好

XML简介

xml是一个可扩展语言,被设计用来传输和存储数据,xml和html类似,不同的是html中都是预定义标签,而xml中没有预定义标签,全都是自定义标签用来表示一些数据

html语法
name = '小明';age=18;

xml语法
<student>
	<name>小明</name>
	<age>18</age>
</student>

HTTP协议

http协议又被称为超文本传输协议,协议详细规定了浏览器与万维网服务器之间互相通信的规则

请求报文
	请求行	GET	/ URL / http版本
	请求头	Content-type application/x-www-form-urlencoded
			...
	空行
	请求体	get请求则为空			post请求 username=admin&password=admin
	
响应报文
	响应行	http版本  200 ok
	响应头	Content-Type text/html;charset=utf-8
		Content-length:2048
		...
	空行
	响应体	<html>
			<head></head>
			<body>
				<h1>返回的内容</h1>
			</body>
		</html>

伪造ajax

部分站点设置了权限
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>伪造ajax</title>
	</head>
	<style type="text/css">
		
	</style>
	<body>
		<div>
			<p>请输入要加载的地址
				<span id="currentTime"></span>
			</p>
			<p>
				<input type="text" id="url" value="https://baidu.com/" />
				<input type="button" value="提交" onclick="loadPage()"/>
			</p>
		</div>
		<div>
			<h3>加载页面的位置:</h3>
			<iframe  width="100%" height="800px" id="iframePosition"></iframe>
		</div>
	</body>
	<script type="text/javascript">
		window.onload=function(){
			var myTime = new Date();
			document.getElementById('currentTime').innerHTML = myTime.getTime();
		}
		function loadPage(){
			var targetUrl = document.getElementById('url').value;
			document.getElementById('iframePosition').src=targetUrl
		}
	</script>
</html>

安装nodejs
安装express

编写时候要注意域名被占用等常见问题

npm i express

代码简介流程:
get请求

创建express.js文件
//引入express
const express = require('express');
//创建应用对象
const app =express();
//创建路由规则
app.get('/server',(request,response)=>{
	//request是请求报文的封装
	//response是响应报文的封装
	//设置响应头  允许跨域
	response.setHeader('Access-Control-Allow-Origin','*')
	//设置响应
	response.send('hello')
}
//监听端口启动服务
app.listen(8000,()=>{
	console.log('服务已经启动,8000端口监听中...')
})
html文件中
结构省略
js代码
const btn = document.getElementById('btn');
btn.onclick = function(){
	//创建对象
	const xhr = new XMLHttpRequest();
	//初始化请求方法和url
	xhr.open('GET','http://127.0.0.1:8000/server');
	//设置请求头
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
	//发送
	xhr.send();
	//事件绑定,处理服务器所返回的结果
	xhr.onreadystatechange = funcion(){
		//判断
		if(xhr.readyState === 4){
			//大于2xx开头的都是属于成功
			//判断响应状态码 200 404 400 401 500...
			if(xhr.status >= 200 && xhr.status<300){
				//处理结果		行  头  体
				//响应行
				console.log(xhr.status)//返回状态码
				console.log(xhr.statusText)//返回状态字符串
				console.log(xhr.getAllRedponseHeaders());//所有响应头
				
				console.log(xhr.response)//响应体
			}
		}
	}
}

post请求

创建express.js文件
//引入express
const express = require('express');
//创建应用对象
const app =express();
//创建路由规则
app.post('/server',(request,response)=>{
	//request是请求报文的封装
	//response是响应报文的封装
	//设置响应头  允许跨域
	response.setHeader('Access-Control-Allow-Origin','*')
	//设置响应
	response.send('post')
}
//监听端口启动服务
app.listen(8000,()=>{
	console.log('服务已经启动,8000端口监听中...')
})
html文件中
结构省略
js代码
const result= document.getElementById('result');
result.addEventListener('mouseover',function){
	//创建对象
	const xhr = new XMLHttpRequest();
	//初始化请求方法和url
	xhr.open('POST','http://127.0.0.1:8000/server');
	//设置请求头
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	//发送  附带参数
	xhr.send('a=100&b=200');
	//事件绑定,处理服务器所返回的结果
	xhr.onreadystatechange = funcion(){
		//判断
		if(xhr.readyState === 4){
			//大于2xx开头的都是属于成功
			//判断响应状态码 200 404 400 401 500...
			if(xhr.status >= 200 && xhr.status<300){
				//处理结果		行  头  体
				//响应行
				result.innerHTML = xhr.response
			}
		}
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复习Ajax 的相关文章

  • SaSS 循环使用

    我想创建类 将特定边距应用于我的块 例如 standard margin top margin top 10px standard margin bottom margin bottom 10px small margin top larg
  • 如何使网页中出现的图标闪烁/闪烁

    几天前我开始研究高级java 我知道太晚了 我被困在使图标 出现在任务栏上 闪烁的特定任务上 这种闪烁应该根据特定条件发生 这意味着可以使用以下方法来实现javascript 我已经搜索了一段时间了 但是有没有办法让图标每隔 1 秒左右出现
  • 具有一个 css 类的堆叠图标

    在新的 FontAwesome 4 0 0 中 堆叠项目有 css 样式 span class fa stack i class fa fa square o fa stack 2x i i class fa fa twitter fa s
  • 使用 JavaScript 进行 HTML 到 MS Word 的页眉和页脚转换

    Am rendering my whole HTML page into MS word Here I tried by referring this link below https phppot com javascript how t
  • 如何在禁用的 HTML 按钮上呈现工具提示

    我有一个 HTML 按钮 我尝试根据按钮的 标题 属性在其上渲染工具提示 但它没有渲染 主要是因为它被禁用了 然后 我尝试将按钮包装在跨度中并设置跨度的 标题 属性 将鼠标悬停在包含在跨度中的按钮上仍然没有效果 工具提示将呈现在不属于按钮标
  • $(this) 在 jQuery 中如何工作

    jQuery 标签是如何实现的 this 到底工作吗 我知道如何使用它 但是 jQuery 如何知道哪个元素是 活动的 用于获取当前项目的原始 Javascript 标签是什么 还是只是 jQuery The this是一个简单的 java
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 基本 CSS 问题 - 父 DIV 与未知子 DIV、居中父 DIV

    当我将 DIV 居中时 我会给它一个宽度并放置margin auto然而 我对这种情况有两个问题 该父 DIV 内将有 2 或 3 个带有 float left 的 DIV 子 DIVS 的宽度不会改变 但数量可能会改变 2 或 3 因此
  • 需要正则表达式(使用 C#)将所有空白压缩为单个空白

    我需要将文档中的多个空格替换为单个空格 每次迭代 无论它们是空格 制表符还是换行符 任何类型的空格的任何组合都需要被截断为单个空格 假设我们有字符串 Hello t t n t n world 其中 t 和 n 分别代表制表符和换行符 那么
  • 使用过渡+不透明度更改+溢出隐藏时出现问题

    如果您看到我共享的代码示例 您可以看到覆盖层超出了框的范围 我将问题追溯到transition属性 我想删除div之外的内容 溢出没有按预期工作 删除transition有效 但如果可能的话我想保留它 任何帮助表示赞赏 代码笔链接 http
  • Twitter Bootstrap - 多图像(缩略图)轮播 - 一次移动一个缩略图

    我正在尝试 Twitter bootstrap 3 我对 HTML CSS 和 Javascript 还很陌生 我有一个我创建的轮播 它的代码如下所示 div class container div class carousel slide
  • 如何在 Bootstrap 4 中垂直对齐?

    我试图在 Bootstrap 4 4 0 0 alpha 6 中将我的大屏幕的内容垂直对齐在中心 在 Mac 桌面上的 Chrome 和 Safari 中 这种情况发生得很好 但在我的 iOS 设备上则不然 文本仍然与顶部对齐 我强制大屏幕
  • Chrome 中的错误或 CSS 错误? (隐藏可见性的锚点)

    在任何 HTML 中测试这个简单的行 a href anything span insible text here span a 您可以直接从这里测试 http jsfiddle net wqS3E http jsfiddle net wq
  • 第一次从按钮提交时,只有单击两次后才会打开模态框

    我有一个模式弹出窗口可以通过单击按钮打开 不幸的是 当第一次在浏览器中提交时 我只能在单击两次后才能看到弹出窗口 但是 一旦弹出窗口打开并关闭 我就可以在下一次尝试中单击一次来打开模式 如果我刷新浏览器也会发生同样的情况 这看起来很奇怪 任
  • 将引导程序中的表单居中不起作用[重复]

    这个问题在这里已经有答案了 我试图将我的表单置于 div 中 但我使用的方法不起作用 我尝试使用引导文档中所述的 justify content center 属性 但它没有将其居中 当我尝试将其居中但应用时display flex and
  • MVC4 捆绑:由于 css3 功能而缩小失败?

    我想使用 MVC4 捆绑和缩小 但我总是在未缩小的 css 文件中收到此错误消息作为注释 Minification failed Returning unminified contents 534 29 run time error CSS
  • CSS calc() 是否可以得到负值?

    假设我们有一个位于视口中心的容器 centered margin 0 auto width 960px 在该容器内 我有另一个容器 其宽度需要为视口宽度的 100 我可以将边距设置为 widest margin 0 480px 例如 问题是
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • 文本溢出:省略号显示不同的字符

    我这里遇到了一些 CSS 问题 看这张图片 https www flickr com photos 125543025 N07 saved 1 在此图像中 我为文本 INTENSE TRAINING 添加了 CSS 样式 sample st

随机推荐

  • 【MicroPython RP2040】可编程IOs(PIO)示例介绍

    MicroPython RP2040 可编程IOs PIO 原文链接 https www cnx software com 2021 01 27 a closer look at raspberry pi rp2040 programmab
  • VSCode连接WSL2及VMware,WSL2安装GUI应用

    一 VScode 连接WSL2 参考文章 巨硬官方文档 知乎大佬教程 知乎大佬教程2 1 开启WSL2 支持 使用管理员权限的 Shell 才能安装 WSL2 按 Win X 找到 Windows PowerShell 管理员 并复制执行命
  • mysql (Errcode: 13 - Permission denied)没有权限找不到文件问题

    下午五点钟 突然反馈说某个页面报错 然后还想让我加班 并且很迅速的帮我点了外卖 我还打算今晚去健身房呢 1 首先从案发现场勘察 页面返回500 2 之后看后台发现某个数据表not found permission denied 3 最后到后
  • 第一次跑高光谱数据结果

    1 所用数据集 Bostwana Indian Pines 所用算法 SVM 2 数据分析 高光谱数据维数高 信息量大 冗余信息多 这些先都不考虑 先输入SVM数据再考虑 3 试验流程 加载数据 包括Data和label 数据预处理 归一化
  • python Pycharm出现“can't find '__main__' module”解决方案

    第一次运行Pycharm工程 出现 can t find main module 最后发现 原来是配置没配对 因为在配置时没有选择 py文件 而只选择了工程名 因此选择Edit Configurations 选择Edit Configura
  • 从“深度伪造”到“深度合成”:AI为啥需要一次“正名”?

    在世人对AI的 邪恶性 进行攻诘的浪潮中 AI造假 可能已经是现在排首位的理由了 自从2017年Deepfake 深度伪造 横空出世以后 人们惊呼原来AI在造假方面简直天赋异禀 此后 AI生成内容 技术 特别是GAN算法的突飞猛进更加印证了
  • ChatGLM-6b本地安装手把手教学

    什么是ChatGLM 6B ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General Language Model GLM 架构 具有 62 亿参数 结合模型量化技术 用户可以在消费级的显卡上进行本地部署 INT
  • 关于windows update 无法更新,以及.NET4.0安装失败

    故障 打开 Windows Update 出现红色盾牌图标 点击 检查更新 出现 Windows Update 当前无法检查更新 因为未运行服务 您可能需要重新启动计算机 查看 Windows Update 服务 正常 查看 Backgro
  • Linux环境下安装notepad++

    Notepad 在linux下名字为Notepadqq Centos下安装方法 sudo wget O etc yum repos d sea devel repo http sea fedorapeople org sea devel r
  • 爬虫(一):Python网络数据采集(爬虫)概述

    专栏介绍 结合自身经验和内部资料总结的Python教程 每天3 5章 最短1个月就能全方位的完成Python的学习并进行实战开发 学完了定能成为大佬 加油吧 卷起来 全部文章请访问专栏 Python全栈教程 0基础 文章目录 专栏介绍 什么
  • hack the box—Lame

    扫描 还是老方法nmap fscan得到开放的端口和服务 nmap sV sC sT v T4 10 10 10 3 看到开了445 先来波ms17 010 发现失败 这里还开个21 并且可以知道版本号 直接搜索ftp漏洞 msf正好有对应
  • Qiskit API架构介绍(一)

    API是一组类 函数和数据结构 用于与设备和模拟器进行接口 并运行实验 Qiskit实验概述 Qobj中的实验序列定义了运行在后端backend上的量子操作 单个Qobj定义了一批要并发运行的实验 即 Qobj中每个实验按列出的顺序运行一个
  • ttl一会255一会64_Ping TTL 的值越小越好?不对!

    我们在使用Ping命令的时候 通常关注的是 时间 这个值 忽略 TTL 这个值 但是细心的人会发现 TTL的值不是每次Ping都一样 也不是Ping每个域名都一样 这是什么原因呢 TTL 又是什么意思呢 可能不少人认为 TTL 的值越小越好
  • java8 sum_lambda – Java 8流由3个字段组合并按sum和count聚合产生单行输出

    前提 class Product public String name public String category public String type public int id todo implement equals toStri
  • 智能合约-Solidity官方文档(1)

    写在前面 HiBlock区块链社区成立了翻译小组 以太坊中文社区 翻译区块链相关的技术文档及资料 本文为solidity官方文档翻译的第一部分 智能合约概述 特发布出来邀请solidity爱好者 开发者做公开的审校 您可以添加微信baoba
  • CSDN城市开发者联盟、C友会期待你的加入

    文章目录 课前小差 chatGPT CSDN中的持续学习 23年原力计划 C友会 CDC 如何关联本地的开发者 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得到CSDN王总的授权 来对于我们每周四的绿萝时间 直达
  • matlab 改变图片的长宽,Matlab怎么调整图片的大小,使它成为特定的长宽

    满意答案 whymhm 推荐于 2017 12 15 采纳率 53 等级 6 已帮助 2557人 一般而言 只需对目标图像进行图形句柄对象和坐标轴句柄对象进行操作即可 MATLAB中分别用gcf和gca表示 如 set gcf unit c
  • 转载:Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二

    关于工作流设计器 即使是很简单的工作流设计 你可能都很难去观看整个工作流图形 幸运的是 设计器有一些非常有用的工具区帮助我们在一个大的工作流上去工作 在设计器的右上角 点击Collapse 收缩 链接 工作流图会如图Figure1 20所示
  • C语言编写图形界面

    文章目录 环境 配置环境 使用库 基础概念 句柄 程序的入口 创建窗口 定义窗口类 注册窗口类 创建窗口 完整代码 运行效果 环境 使用的是VSCode MinGW 配置环境 VSCode写C语言的环境就不讲了 就说一下本篇文章编译的条件吧
  • 复习Ajax

    ajax简介 ajax全称为Asynchronous JavaScript And XML 就是异步的js和XML ajax不是一个新的编程语言 而是一种将现有的技术组合在一起使用的新方式 ajax特点 通过ajax可以在浏览器中向服务器发