IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> AJAX -> 正文阅读

[JavaScript知识库]AJAX

AJAX是什么?

AJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)。简单来说,就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON,XML,HTML和text文本等格式发送和接收数据。AJAX最吸引人的就是它的“异步”特性。

AJAX有什么作用?

它可以在不重复刷新的页面的情况下与服务器通信,交换数据,或更新页面

AJAX不是一种新的编程语言,而是一种使用现有标准的新方法

异步:比如两件事情要做,先做第一件事,你不需要等待其他的结果,可以继续做第二件事件

同步:比如两件事要做,先做第一件,你要等待他出现结果,等结果出来之后,你才能继续做第二件事件

例如:

同步:

进程一 1ms

进程二 1ms

进程三 1ms

则需要3ms完成

异步:

进程一 1ms

进程二 1ms

进程三 1ms

则需要1ms完成

1.怎么发送http请求

需要创建XMLHttpRequest对象,XMLHttpRequest实现客户端与服务器的通信

需要考虑浏览器兼容问题

??????if (window.XMLHttpRequest) { // 新版浏览器 Chrome Safari 火狐 欧朋 IE7以上

?????????????xhr = new XMLHttpRequest();

???????} else { // 兼容IE6以下版本的浏览器

?????????????xhr = new ActiveXObject("Microsoft.XMLHTTP");

???????}

xhr.open(参数1,参数2,参数3);

参数1是请求方式(method):GET或POST

参数2是请求地址(url)

参数3是异步或同步(async):true是支持异步,false是不支持异步

发送请求

xhr.send();

一个简单的get请求

xhr.open(“GET”,“/”,true);

xhr.send();

一个简单的post请求

xhr.open(“POST”,“/”,true);

xhr.send();

  1. 处理响应数据

通过onreadystatechange函数进行处理

ReadyState:

0(未初始化) or (请求还未初始化)

1(正在加载) or (已建立服务器链接)

2(加载成功) or(请求已接受)

3(交互) or(正在处理请求)

4(完成) or (请求已完成并且响应已准备好)

Status:

200 ?响应成功

404 访问失败

500 服务器错误

responseText 处理数据 -- 服务器以文本字符的形式返回

responseXML 以XMLDocument 对象方式返回,之后就可以JavaScript来处理

xhr.onreadystatechange = function () {

?????if (xhr.readyState == 4 && xhr.status == 200) {

??????????var str = xhr.responseText;

??????}

}

案例:

这个案例需要使用bootstrap插件和jQuery插件完成

Html:

<div?class="container mt-5">

@*οnsubmit="return false" 阻止表单自动提交*@

<form?id="frm"?action="/Main/getData"?method="get"?onsubmit="return?false">

<div?class="form-group form-row">

<label?class="form-check-label col-3 text-center">姓名:</label>

<input?id="txtName"?class="col-9 form-control"?type="text"?name="name"?value=""?/>

</div>

<div?class="form-group form-row">

<label?class="form-check-label col-3 text-center">性别:</label>

<select?name="sex"?class="form-control col-9"?id="sexBox">

<option?value="0">--请选择--</option>

<option?value="男"></option>

<option?value="女"></option>

</select>

</div>

<div?class="form-group form-row">

<label?class="form-check-label col-3 text-center">地址:</label>

<textarea?id="txtAdd"?class="col-9 form-control"?name="address"></textarea>

</div>

<div?class="form-group form-row">

<button?type="button"?id="btnGetData"?class="btn btn-outline-primary offset-3 mr-2">从控制器获取数据</button>

<button?type="button"?class="btn btn-outline-success mr-2"?onclick="postData() >POST提交</button>

????</div>

????</form>

</div>

控制器里的代码;

namespace?AjaxCourse.Controllers

{

????public?class?AjaxController?: Controller

????{

????????// GET: Ajax

????????public?ActionResult Index()

????????{

????????????return?View();

????????}

???????

????????///?<summary>

????????///?从控制器返回数据给视图

????????///?</summary>

????????///?<returns></returns>

????????public?ActionResult GetData()

????????{

????????????string?str = "{\"name\":\"张三\",\"sex\":\"男\",\"address\":\"广州市南沙区\"}";

????????????return?Content(str);

????????}

????????///?<summary>

????????///?通过形参的方式来接收视图传递过来的数据

????????///?</summary>

????????///?<param name="name"></param>

????????///?<param name="sex"></param>

????????///?<param name="address"></param>

????????///?<returns></returns>

????????public?ActionResult RecieveData(string?name,string?sex,string?address)

????????{

????????????// 拼接字符串

????????????string?str = "姓名:"?+ name + ",性别:"?+ sex + ",地址:"?+ address;

????????????//返回给视图

????????????return?Content(str);

????????}

}

浏览器:

当鼠标点击“从控制器获取数据”按钮,则上面文本框出现相应的信息

效果:

?

?

AJAX:

?

上面的发送请求里的请求方式是“GET”,请求地址是“/Ajax/GetData”(就是从控制器里获取数据 Ajax是控制器里?// GET: Ajax,GetData是控制器里自定义的函数名)

当输入内容到文本框里,然后点击“POST按钮”,提交数据,控制台输出相应的数据

例如:

?

AJAX:

?

上面的发送请求里的请求方式是“POST”,请求地址是“/Ajax/RecieveData”(就是从控制器里获取数据 Ajax是控制器里?// GET: AjaxRecieveData是控制器里自定义的函数名)

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:43:07  更:2022-07-20 18:46:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 12:55:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码