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 ...
随机推荐
- 虚拟磁盘VHD文件压缩方法
问题描述 因工作需要在Mac上跑了一个VirtualBox虚拟win7,使用对win系统友好的vhd格式作为虚拟硬盘.经过一段时间使用发现vhd占用空间远大于虚拟磁盘使用量,想办法减减肥才行. 步骤整 ...
- centos7下自动备份mysql数据库
环境:centos7 .mysql5.7 第一步:创建自动备份脚本文件 mkdir backup cd backup touch backup.sh 第二步:在备份脚本文件中写入备份脚本 vim ba ...
- Qt VS Tools插件官方下载及安装
下载 官方下载地址:https://download.qt.io/development_releases/vsaddin/(国外网站直接打开超级慢) 找到对应的VS版本下载 安装 下载完成后安装,打 ...
- 2019-08-09 纪中NOIP模拟B组
T1 [JZOJ1035] 粉刷匠 题目描述 windy有N条木板需要被粉刷. 每条木板被分为M个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一 ...
- 使用listView有感
et listView = new ccui.ListView();this.addChild(listView,9999);listView.setDirection(ccui.ScrollView ...
- WebRTC 之ICE浅谈
前言 ICE全称Interactive Connectivity Establishment:交互式连通建立方式. ICE参照RFC5245建议实现,是一组基于offer/answer模式解决NAT穿 ...
- 【15】【有点特殊的dp】 剪绳子
题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]k[1]...* ...
- 修改oracle数据库用户名和密码
第一步:连接数据库 使用ssh工具以root身份连接服务器, 然后切换到oracle用户:su - oracle(回车) 使用sqlplus连接数据库:sqlplus /nolog(回车) 以管理员身 ...
- 以POST方式发送
URL url = null; String inputLine = null; HttpURLConnection httpurlconnection = null; try { //取上级电警平台 ...
- python3练习100题——019
原题链接:http://www.runoob.com/python/python-exercise-example19.html 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数&q ...