Ajax-快速上手前后端交互
Ajax
在之前自己也有总结过关于Ajax的笔记,各种的懵圈,通过一次项目和几次的总结和分享,我对Ajax终于算是有了一定的理解和自己的见解。相信大家见过和度过了很多的关于Ajax的什么前世今生、大刀阔斧等文章,我自己也受益匪浅。在这里我就谈谈自己的简单理解和用法。
Ajax是什么?
Ajax就是当浏览器(客户端)向服务器发送请求时用的一种技术,它的核心是XMLHttpRequest对象,他最大的特点就是向服务器请求额外的数据而无须加载页面(刷新),既异步加载。Ajax技术是怎样实现请求的?
目前Ajax技术有两种方式实现请求:一、通过他的核心对象XHR(XMLHttpRequest的缩写);二、通过window.fetch()方法进行请求。
1.1通过XHR对象进行请求(原生js)代码如下://1、创建XHR对象
var request = new XMLHttpRequest();//在大多数浏览器中,在ie5、ie6中不支持这个方式
//在ie5、ie6中兼容只需定义下面这个函数
var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else{
request = new ActiveXObject("Microsoft.XMLHTTP");
} //2、进行请求完整代码
var xhr = '';
var requestData = '';
//兼容性处理
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} xhr.open('GET/POST','url',true/false);//get和post请求,true为异步请求、false我为同步请求,请求的URL中可带参数进行请求
xhr.setRequestHeader("Content-type", "application/json");//添加http头信息,该函数的顺序必须是open之后,send之前
xhr.send(JSON.stringify({
name: '小明',
age: 20
}));//post的send(String)必须要,send用于发送请求参数,如果不需要请求体发送请求参数,则为null。
//send传输的数据是以json数据格式传给后台的。
//返回响应
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
//请求成功的处理函数,服务器返回的数据存入responseText属性中
requestData = xhr.responseText;//获取到后台响应的数据
var date = JSON.parse(requestData);//将响应数据转化成json格式,以便使用
//使用数据
//~~~
}else{
//请求数据错误的处理函数
}
}else{
//ajax发送失败,没有得到响应数据
}
}
1.2使用jQuery的$.ajax()方法实现请求,代码如下:
$.ajax({
type: 'GET',//请求方式
url: 'url',//请求资源地址或请求接口
data: {
//请求参数
},
success: function(data){//服务器响应的数据都存入data中
//请求成功处理函数
if(data.status === '0'){
alert(data.message);
} else {
//向自己的html添加服务器响应的数据
}
}
error: function(){
//请求失败处理函数
}
});
2、目前市场上已经在使用window.fetch()方法,XMLHttpRequest 是一个设计粗糙的 API,不符合关注分离(Separation of Concerns)的原则,配置和调用方式非常混乱,而且基于事件的异步模型写起来也没有现代的 Promise,generator/yield,async/await 友好。Fetch 的出现就是为了解决XHR的问题
他的请求代码如下:window.fetch(url).then(function(response){//响应值放入response中
return response.json();//用json()方法把相应的数据转化为javascript对象
}).then(function(data)
//请求成功处理函数
}).catch(function(e){
//请求失败处理函数
})
Ajax扩展
Ajax为了扩充他的功能,发展了XHR2,这里我就不再详细说明,想要对Ajax的请求做详细了解的可以查看我最初的Ajax学习笔记!
Ajax-快速上手前后端交互的更多相关文章
- content-type常见类型辨析(以ajax与springmvc前后端交互为例)
博客搬家: content-type常见类型辨析(以ajax与springmvc前后端交互为例) 在http报文的首部中,有一个字段Content-type,表示请求体(entity body)中的数 ...
- SSM-网站后台管理系统制作(4)---Ajax前后端交互
前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...
- thinkphp+jquery+ajax前后端交互注册验证
thinkphp+jquery+ajax前后端交互注册验证,界面如下 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...
- ajax学习----json,前后端交互,ajax
json <script> var obj = {"name": "xiaopo","age": 18,"gender ...
- Vue-CLI项目-axios模块前后端交互(类似ajax提交)
08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axio ...
- 从MVC到Ajax再到前后端分离的思考
前言 一位小妹去面试前端,前端leader问了"什么是ajax?",答:"接收后台的数据,然后然后自己填充和渲染样式":一位小哥去面试后台,技术经理问了&quo ...
- Node之简单的前后端交互
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- 前后端交互实现(nginx,json,以及datatable的问题相关)
1.同源问题解决 首先,在同一个域下搭建网络域名访问,需要nginx软件,下载之后修改部分配置 然后再终端下cmd nginx.exe命令,或者打开nginx.exe文件,会运行nginx一闪而过, ...
随机推荐
- Difference between .classpath and MANIFEST.MF
What is the difference between adding a dependency jar to the .classpath file in a RAD project and a ...
- D3D9和OpenGL加载纹理图片的API是哪个?
D3D9 创建一个空纹理,当返回 S_OK 且 ppTexture 纹理对象指针不为 NULL 时,则表示该函数调用成功. HRESULT D3DXCreateTexture( _In_ LPDIR ...
- MySQL中锁问题
1.脏读 脏页只是在缓冲池中已经修改的页但是没有刷新到磁盘中,即数据库实例内存中的页和磁盘中的页事不一致的,当然在刷新到磁盘之前,日志都已经被写入到了重做日志文件中,而所谓的脏数据是指事务对缓冲池中行 ...
- SQL Server误删表查看
SQL Server误删表查看 转自:http://blog.51cto.com/aimax/2134572 SQL Server 完全恢复模式 下恢复误删除的表,进行 精准 恢复 1. 找出被 ...
- Sql Server 2005 .bak备份文进行还原数据库
https://jingyan.baidu.com/article/9158e000250b91a25412283f.html https://www.cnblogs.com/webmen/p/575 ...
- 剑指offer 面试6题
面试6题: 题目:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值. 解题代码: # -*- coding:utf-8 -*- # class ListNode: # def __init ...
- 电信、网通、联通等恶意DNS劫持跳广告页面的解决方法
中国电信.网通.联通ADSL用户必读:中国电信.网通.联通劫持dns(中国电信.网通.联通劫持ie浏览器)解决方案D... 宽带连接有 也能上网但是本地连接一直显示为受限制的解决方法 我的电脑一直显示 ...
- python默认参数不能定义为可变对象类型
python的默认参数只会在函数定义时被确定,而不是每次调用时重新确定,所以,一旦在函数中修改了默认参数,则在随后的调用中都会生效 由于这个特性,在定义函数时,如果默认参数使用可变的对象类型,如空列表 ...
- Android:日常学习笔记(7)———探究UI开发(1)
Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...
- Ubuntu环境变量配置
根目录下的.bashrc文件中配置环境变量 export JAVA_HOME=/home/zn/softpackage/jdk1. export CLASSPATH=${JAVA_HOME}/lib ...