AJAX技术初级探索
一 概念
Ajax技术能够实现页面以异步方式从服务器获取信息,无需刷新页面
Ajax的核心技术是XMLHttpRequest对象(XHR)
异步实际就是请求数据的代码不会阻塞页面向下执行
二 原生Ajax
1 创建XMR对象
var xhr=new XLMHttpRequest();
2 打开请求|准备请求
xhr.open(参数)
参数分别为:
请求类型 get(将内容拼接在请求地址中)
post(非地址传输)
请求路径 js/data.json
若是get请求在路径之后通过?拼接参数,参数以&连接
是否异步 Boolean true为异步 false为同步
默认ture为异步执行
3 发送请求
xhr.send();
send中的传递到后台的数据
get请求 为null(请求参数在请求地址后面)
post请求 可设传递参数,若无为null
参数格式为” uname=zhangsan&upwd=123”
注意:在post提交之前添加模拟表单提交的代码
|
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); |
4 判断响应
异步请求
1绑定监听事件onreadystatechange
2获取响应状态码readyState, 判断接收是否完成
readyState为4表示接收结束
3判断响应结果
xhr.status 200为请求成功
404为请求路径不存在
500为服务器内部异常
4获取响应数据
xhr.responseText 服务器响应的数据(可能为各种格式)
|
xhr.onreadystatechange = function(){ if (xhr.readyState == 4) { if (xhr.status == 200) { console.log(xhr.responseText); } } } |
同步请求不需要监听与状态码
三 原生Ajax封装
1 定义调用对象
请求类型 请求地址 是否异步 上传信息 数据处理方法
|
var u1 = { method:"GET", url:"js/data.json?key=a&uname=zhangsan&upwd=12345", async:true, data:{ uname:"zhangsan", upwd:"123456" }, success:function(result){ console.log(result); } }; |
注意: 数据处理方法中的参数result表示ajax回调的结果数据.
数据处理方法中执行结果数据的处理.
2 封装体
A 创建XMLHttpRequest核心对象
代码:
|
var xhr = new XMLHttpRequest(); |
B 格式化参数
本过程中取出调用对象的各参数,赋值到变量中.主要内容是拼接与遍历
请求类型(转大写)
请求地址(get请求中进行字符拼接)
是否异步
上传信息(转为字符串)
数据处理方法
|
var param = obj.data; // 将json对象格式的参数转换为指定格式的字符串 uname=zhangsan&upwd=12345 var paramArray = []; // 遍历参数对象 for (var key in param) { // 拼接参数名和参数值 var pa = key+"="+param[key]; // 将数据追加到数组中 paramArray.push(pa); } // 将数组通过指定符号转换成字符串 var p = paramArray.join("&"); // 得到用户请求类型 var method = obj.method.toUpperCase(); //判断请求类型,如果是GET请求,在请求地址后面拼接请求参数 if (method == "GET") { // 判断地址中是否包含"?",如果有,则拼接时使用"&";如果没有,则使用"?" obj.url +=(obj.url).indexOf("?") > -1 ? "&" + p:"?" + p; } |
C打开请求
|
xhr.open(method,obj.url,obj.async); |
D请求提交
在提交前将post方式请求前添加模拟表提交
提交代码,经post中的请求内容加到提交方法中
|
// 如果是POST请求,则需要模拟表单提交 if (method.toUpperCase() == "POST") { // 模拟表单提交 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // post提交 xhr.send(p); } else { // get提交 xhr.send(null); } |
E 响应判断
分别对异步同步执行对应的流程
设置回调函数 调用传入的数据处理方法对服务端响应的数据进行处理
|
判断是否是否是异步请求 if (obj.async) { // 异步请求 // 监听readySate的值,判断响应是够完毕 xhr.onreadystatechange = function() { // 如果完全响应,值为4 if (xhr.readyState == 4){callback();} } } else { // 同步请求 callback(); } |
|
// 回调函数 function callback() { // 判断是否响应成功 status=200 if (xhr.status == 200) { // 得到相应数据,并回调数据给调用者 var result = xhr.responseText; obj.success(result); } } |
三 通过JQuery使用Ajax
JQuery中封装了Ajax
调用格式
普通调用
$.ajax(参数); 参数为json对象
json对象的参数包括
{ type: "get", 或者”post”
url: "js/data.json", 目标地址
data:{ }, 传入的数据
dataType: "json" 服务器返回的数据类型
success:function(result){对result的操作代码}
}
以下为具体内容
type:请求方式 GET/POST
url:请求地址 url
async:是否异步,默认是 true 表示异步
data:发送到服务器的数据
dataType:预期服务器返回的数据类型
contentType:设置请求头
success:请求成功时调用此函数
error:请求失败时调用此函数
get调用
$.get(参数) 通过逗号分隔 省略key值
|
$.get("js/data.json",{},function(data){console.log(data);}); |
post调用
$.post(参数) 通过逗号分隔 省略key值
|
$.post("js/data.json",{},function(data){console.log(data);}); |
getJSON调用 属性通过逗号分隔 省略key值
|
$.getJSON("js/data.json",{},function(data){console.log(data);}); |
跨域调用
两个域名,从一个域名访问另一个的域名 需要通过jsonp方式发送请求
条件 1远程接口支持跨域访问
2 ajax中设置dataType:"jsonp" [jsonp:’callback’]
|
$.ajax({ type:"get", url:"http://iservice.itshsxt.com/restaurant/find", data:{ }, dataType:"jsonp", success:function(result){console.log(result);} }); |
三 eclipse中web项目的设置
调出server窗口
window菜单->show view ->other ->查找servers 选中打开窗口
创建server
右击new ->server -> 选中Apache下的Tomcat版本 next->
选择tomcat目录(选bin的父目录) 选中jdk next ->完成
启动tomcat测试
注意:Tomcat的默认接口8080,与oracle冲突,需要手动关oracle服务或改端口
创建web项目
文档框new选择other.查找web 选择Dynamic Web Project 设项目名一路确认
在tomcat上右击选择(add and move) 在左右选框中移动项目
web项目中webContent下创建页面和资源文件 webContent与src都相当于根目录
访问地址 localhost:端口号/项目名/(webContent下的直接目录)
AJAX技术初级探索的更多相关文章
- 使用ajax技术实现txt弹出在页面上
使用ajax技术实现txt弹出在页面上 使用ajax技术实现点击按钮,将TXT文本里的内容通过弹出框显示到页面上 /*事件会在页面加载完成后触发.*/ <script> window. ...
- 《所用到的AJAX技术基础》
来自百度网页,w3cshool网页:AJAX = Asychronous JavaScript and XML,翻译成中文为:异步的JavaScript XML. 异步的意思就是不重新加载整个页面,后 ...
- Ajax技术
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- Ajax技术详解
Ajax技术:Ajax描述了一种主要使用脚本(JS)操纵HTTP的web应用架构,它的主要特点是使用脚本操纵HTTP和web服务器进行数据交换,不会导致页面重载.Ajax的核心是JS的XMLHttpR ...
- Java之Ajax技术
ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(现在常把xml换成json): ajax是2005年提出的,在2006,2007年 ...
- 在 PHP 中结合 Ajax 技术进行图片上传
前面几则日志中讲述了在 PHP 中上传文件,相信大家对 PHP 中如何进行文件上传已经初步掌握.本文来继续探讨在 PHP 中上传文件的技术,不同的是,本次上传将仅限于图片文件的上传,并且将采用 Aja ...
- ajax 技术和原理分析
ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLH ...
- Ajax 技术一
一.Ajax概述 1.历史起源 1998年,微软公司Outlook Web Access研发小组在当时的IE浏览器中集成了一种技术,可以在客户端无刷新的前提下向服务器端发送Http请求,这门技术称之为 ...
- AJAX技术的核心
//创建一个XMLHttpRequest对象 ,利用此对象与服务器进行通信 是AJAX技术的核心 /** * 获取XmlHttpRequest对象 */ function getXMLHttpRequ ...
随机推荐
- 二、vim的保存文件和退出命令
vim的保存文件和退出命令 命令 简单说明 :w 保存编辑后的文件内容,但不退出vim编辑器.这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中. :w! 强制写文件,即强制覆盖原有 ...
- AcWing 187. 导弹防御系统
//dp+dfs+贪心 //记一个全局变量 #include<iostream> using namespace std ; ; int n; int ans; int q[N]; int ...
- 洛谷P1028 数的计算
https://www.luogu.org/problem/P1028 #include<cstdio> using namespace std; int main(){ ,i,f[]; ...
- D0 设计模式
单一职责 一个类只负责一个功能领域中的相应职责.,就一个类而言,应该只有一个引起它变化的原因. 单一职责原则告诉我们: 一个类不能太"累"! 在软件系统中, 一个类( 大到模块, ...
- [HNOI2013] 游走 - 概率期望,高斯消元,贪心
假如我们知道了每条边经过的期望次数,则变成了一个显然的贪心.现在考虑如何求期望次数. 由于走到每个点后各向等概率,很显然一条边的期望次数可以与它的两个端点的期望次数,转化为求点的期望次数 考虑每个点对 ...
- JMeter压力测试,http请求压测,5分钟让你学会如何压测接口!
JMeter压力测试 官网:https://jmeter.apache.org 最新款的jmeter需要java8的支持,所以请自行安装jdk8.这里就不啰嗦了. 可以根据自己的系统下载zip或者是t ...
- 剑指offer 面试题. 二叉搜索树的第k个结点
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 解: 由于二叉搜索树的中序遍历是升序,所以在中 ...
- vue图书小案例
小知识点: vue中计算属性有缓存(对象属性变化时才会更新),方法没有缓存,所以计算属性比方法效率高js中let有块级作用域,var没有块级作用域,所以var是有缺陷的this.letters[0] ...
- Python_包
包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警 ...
- 路飞-后台xadmin配置
xadmin后台管理 安装:luffy虚拟环境下 # >: pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 ...