、jQuery的Ajax编程
1.回顾传统Ajax开发步骤
①:创建xmlHttpRequest对象
var xmlHttp = creatHttpRequest();
②:绑定回调函数
xmlHttp.onreadystatechange = function(){……}
③:建立连接
xmlHttp.open(“GET”,”url”);
④:发送数据
xmlHttp.send(null) //GET请求
如果是POST请求需要设置编码格式:
xmlHttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlHttp.send(“key=value?key=value”)
⑤:书写回调函数
if(readyState == 4){
if(status ==200){
……
//操作xmlHttp.responseText主要针对返回HTML片段和json
//操作xmlHttp.responseXML主要针对返回XML片段。
}
}
2.jQuery的Ajax开发
jQuery提供了最底层的Ajax调用方法:$.ajax
$.ajax{
type:”POST”
url: “some.php”
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
}
// 因为使用比较繁琐,所以在实际开发中,应用很少
为了简化Ajax开发,jQuery提供了对$.ajax()进一步的封装方法$load、$get、$post。这三个方法不支持跨域,$getJSON、$getScript支持跨域。
①:load方法
load方法是jQuery中最为简单和常用的Ajax方法,处理HTML片段此方法最为合适。
语法
$("jquery对象").load("url","data") ;
url:Ajax访问服务器地址
data:请求参数
返回内容HTML片段 ,自动放入$("jquery对象")innerHTML 中(如果返回的数据需要处理,我们可以使用get或者post)
load()方法的传递参数根据参数data来自动自定。如过没有参数的传递,采用GET方式传递,否则采用POST方式
练习一:校验用户名是否存在
此练习在第五章的第三小节有实现代码,这里使用jQuery的方式进行简要的列出核心代码:
$(function(){
// 为用户名添加离焦事件
$("input[name='username']").blur(function(){
// 获得当前输入 username
var username = $(this).val();
// 提交Ajax校验
$("#info").load("/Ajax/checkUsername" , {'username': username});
});
});
<form>
<!-- div display:block 自动换行效果 span display:inline; 不会换行 -->
用户名 <input type="text" name="username" /><span id="info"></span> <br/>
密码 <input type="password" name="password"/><br/>
<input type="submit" value="注册" />
</form>
②:get方法和post方法
语法 :
$.get/$.post("url","parameter",function(data){...});
url Ajax访问服务器地址
parameter 代表请求参数
function 回调函数 data 代表从服务器返回数据内容
这里data代表各种数据内容 : HTML片段、JSON、XML
如果传递参数给服务器使用 $.post , 不需要传参数 可以使用 $.get
当今数字时代,互联网的发展让我们的网页愈发交互且动感十足。你是否曾想过这些令人惊艳的网页是如何实现的呢?答案之一就在于 Ajax(Asynchronous JavaScript and XML)技术。在本文中动手实现属于你自己的 Ajax 请求!
Ajax,这个听起来充满未知魔力的缩写,实际上代表了一种让网页实现异步数据交换的技术。通过 Ajax,我们能够在不刷新整个页面的情况下,动态地加载和更新数据,为用户提供更加流畅和即时的体验。
你是否曾想过,这些异步请求是如何工作的?只需一点前端魔法的指引,你也能够轻松掌握手写 Ajax 的技巧。
在本文中,我们将深入了解 Ajax 的工作原理,并通过实际动手的方式,逐步构建一个简单而强大的异步请求。
// 兼容性·IE6.0以前 现在没什么必要 IE -> Edge
const xhr =
XMLHttpRequest
? new XMLHttpRequest()
: new ActiveXObject('Microsoft.XMLHTTP')
xhr.open('GET', url, false)
// 宏任务 事件
xhr.onreadystatechange = function () {
if (xhr.readyState !== 4)
// 叼一下 表现一下 304 Not Modified 没有修改
if (xhr.status === 200 || xhr.status === 304) {
resolve(xhr.responseText);
} else {
rejecct(new Error(xhr.responseText))
}
}
xhr.send();
// onreadyStateChange
// setTimeout(() => {
// resolve('gigi')
// }, 1000)
})
};
在这段代码中,主要完成了使用 XMLHttpRequest 对象进行同步(xhr.open('GET', url, false))Ajax 请求的操作。让我逐步解释这段
代码:
const xhr = XMLHttpRequest
? new XMLHttpRequest()
: new ActiveXObject('Microsoft.XMLHTTP');
if (window.XMLHttpRequest) {
// 现代浏览器支持
XMLHttpRequest xhr = new XMLHttpRequest();
} else {
// 旧版 Internet Explorer 使用 ActiveXObject
xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
xhr.open('GET', url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState !== 4)
if (xhr.status === 200 || xhr.status === 304) {
resolve(xhr.responseText);
} else {
reject(new Error(xhr.responseText))
}
};
在这个条件分支中,检查 xhr.status,它表示 HTTP 响应的状态码。状态码 200 表示成功,而 304 表示资源未被修改,可以从缓存中加载。如果状态码是 200 或 304,则将 Promise 置为成功状态,调用 resolve 函数,传递响应文本 (xhr.responseText)。如果状态码不是 200 或 304,则说明请求失败,将 Promise 置为拒绝状态,调用 reject 函数,并传递一个包含错误信息的新 Error 对象。讲到这里,我要提醒一下大家,在面试的过程中,当你的代码中出现状态码,那么请做好准备,面试官很有可能会把所有的HTTP状态码都问你一遍,这其实是好事,可以增加你在面试过程中的时间,帮你更轻松的度过面试死亡时间,因为比起面试官的其他问题,这个状态码简直不要太简单,希望大家有时间就看看,并没有多少。我在文章结尾会补充说明把状态码发出来,希望对你有所帮助。
xhr.send();
总体来说,这段代码是一个非常基础的使用 XMLHttpRequest 对象进行同步 Ajax 请求的例子。然而,现代的 web 开发更倾向于使用异步请求,通常使用 fetch 或类似的 API,因为它们提供更好的性能和用户体验。
在本文中,我们深入研究了 Ajax 技术的本质,揭示了它在现代前端开发中的不可或缺的角色。通过手写 Ajax,我们掌握了异步请求的核心概念,以及如何使用纯粹的 JavaScript 在网页上实现动态数据交换。
我们了解到,Ajax 不再是前端魔法师的专属工具,而是每个开发者都能够掌握的技能。通过实际动手的练习,我们发现了异步编程的奇妙之处,以及在网页交互中如何利用 Ajax 构建更加响应式和流畅的用户体验。
但这只是前端开发旅程的开始。在未来的学习中,你可以进一步探索现代工具和框架,如 Fetch API、Axios 等,它们提供了更强大和便捷的方式来处理异步请求。同时,深入理解 Promise 和 async/await 等概念将使你更加游刃有余地处理异步编程挑战。
无论你是初学者还是经验丰富的开发者,手写 Ajax 是一个深入理解前端技术根基的重要一步。希望本文能够激发你对前端开发的兴趣,并为你在这个令人兴奋的领域中迈出更大的步伐提供了坚实的基础。
感谢阅读,愿你在前端的旅途中不断探索、学习、创造,成为一位优秀的前端工程师!如果文章对你有所帮助,还望点个赞支持一下。
HTTP 协议使用状态码(HTTP status codes)来表示请求的处理结果。状态码是服务器对客户端发起的请求的响应的一部分,它提供了关于请求处理成功与否、出现错误的信息。
以下是常见的 HTTP 状态码,它们不仅适用于 HTML,也适用于其他资源的请求:
编写你自己的Ajax:探索前端异步世界
原文链接:https://juejin.cn/post/7311893415151517736
jax指的是异步JavaScript和XML,是一套综合了多项技术的浏览器端网页开发技术。也是目前网页前端设计较为流行使用的技术。Ajax能够真正实现网页前端与业务后台的分离,体现出网页设计大前端的设计思想。所有的前端设计只需要通过Ajax将消息传递给业务逻辑,运算完直接发送前端。其实现原理如下:
工作原理及过程
一般情况下,在处理具体业务是网页通常采用发送HTTP请求中带有参数形式传递命令与数据,处理页面接收到数据之后进行处理。这种情况需要页面跳转或者页面刷新,增加了服务器与客户端通信的开销。而使用Ajax技术进行业务处理时只需要通过Ajax与Json实现在不刷新页面前提下完成业务功能,在满足前后端分离的基础上进一步降低网络通信量。本文针对初学者以实例形式对Ajax应用进行说明,希望对初学者有所帮助。
案例描述:前端为用户信息查询页面login.html,提供文本框用于接收用户姓名,业务逻辑处理页面为query.php,模拟接收用户姓名,执行查询,返回用户基本信息,前端login.html通过Ajax回调函数读取信息并以table形式进行输出显示。其前端页面设计如下:
前端测试页面
(1) XMLHttpRequest对象
XMLHttpRequest是 AJAX 的基础。用于向服务器发送request请求实现数据交换。由于是对象XMLHttpRequest在使用的时候需要用new进行对象的实例化。如:var xmlhttp = new XMLHttpRequest();
(2) 发送请求open()与send()
通过使用open与send方法将客户端Ajax请求发送到服务器端,其中open请求带有请求类型等参数,send可以带传递的参数值。两函数基本语法如下:
open(method,url,async)//方法、处理URL,异步/同步 send(string)//post类型时传递参数
(3) onreadystatechange 事件
通过使用该事件用于响应服务器端状态的改变,readyState与status,其中readyState=4表示服务器请求已完成,响应已就绪。status=200表示已就绪。因此可以在该事件响应函数中去接收服务端传递数据。
(4) 服务器返回值类型responseText与responseXML,其中responseText表示接收服务器发送过来的字符串。
(1)获取表单用户名值 var uname=document.getElementById('name').value;
(2)发送Ajax POST请求
Ajax Post请求
(3)(服务器请求处理)业务逻辑处理
php处理业务逻辑
(4)前端获取服务器值并输出显示表格
前端显示服务器发送数据(在不刷新页面情况下)
以上给出使用JavaScript原生态Ajax进行服务器与客户端浏览器进行数据交互的简单例题,重点为XMLHttpRequest对象的使用,业务逻辑处理使用了PHP。整体实现效果GIF动图描述如下:
Ajax实现效果
本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!如需案例完整代码请关注并私信,往期前端设计文章链接如下:
*请认真填写需求信息,我们会在24小时内与您取得联系。