一 概念

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技术初级探索的更多相关文章

  1. 使用ajax技术实现txt弹出在页面上

    使用ajax技术实现txt弹出在页面上   使用ajax技术实现点击按钮,将TXT文本里的内容通过弹出框显示到页面上 /*事件会在页面加载完成后触发.*/ <script> window. ...

  2. 《所用到的AJAX技术基础》

    来自百度网页,w3cshool网页:AJAX = Asychronous JavaScript and XML,翻译成中文为:异步的JavaScript XML. 异步的意思就是不重新加载整个页面,后 ...

  3. Ajax技术

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  4. Ajax技术详解

    Ajax技术:Ajax描述了一种主要使用脚本(JS)操纵HTTP的web应用架构,它的主要特点是使用脚本操纵HTTP和web服务器进行数据交换,不会导致页面重载.Ajax的核心是JS的XMLHttpR ...

  5. Java之Ajax技术

    ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(现在常把xml换成json): ajax是2005年提出的,在2006,2007年 ...

  6. 在 PHP 中结合 Ajax 技术进行图片上传

    前面几则日志中讲述了在 PHP 中上传文件,相信大家对 PHP 中如何进行文件上传已经初步掌握.本文来继续探讨在 PHP 中上传文件的技术,不同的是,本次上传将仅限于图片文件的上传,并且将采用 Aja ...

  7. ajax 技术和原理分析

    ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLH ...

  8. Ajax 技术一

    一.Ajax概述 1.历史起源 1998年,微软公司Outlook Web Access研发小组在当时的IE浏览器中集成了一种技术,可以在客户端无刷新的前提下向服务器端发送Http请求,这门技术称之为 ...

  9. AJAX技术的核心

    //创建一个XMLHttpRequest对象 ,利用此对象与服务器进行通信 是AJAX技术的核心 /** * 获取XmlHttpRequest对象 */ function getXMLHttpRequ ...

随机推荐

  1. 编码 - 调整 gitbash 文本字符集

    概述 gitbash 设置 文本字符集 背景 最近被 编码 的事情搞得乱七八糟 有点没头绪, 所以碰到 编码相关 的东西, 都想看上一看 环境 os win10.1903 git 2.20.1 1. ...

  2. 小匠第一周期打卡笔记-Task02

    一.文本预处理 预处理通常包括四个步骤: 读入文本 分词 建立字典,将每个词映射到一个唯一的索引(index) 将文本从词的序列转换为索引的序列,方便输入模型 读入文本: import collect ...

  3. php curl 发起get和post网络请求

    curl介绍 curl是一个开源的网络链接库,支持http, https, ftp, gopher, telnet, dict, file, and ldap 协议.之前均益介绍了python版本的p ...

  4. Codeforces Round #615 (Div. 3) A-F简要题解

    contest链接:https://codeforces.com/contest/1294 A. 给出a.b.c三个数,从n中分配给a.b.c,问能否使得a = b = c.计算a,b,c三个数的差值 ...

  5. JQ DOM元素 创建 添加 删除

    创建元素 // 创建元素节点 $('<p></p>'); // 创建属性节点 $('<p class="wow"></p>'); / ...

  6. qml-main.cpp中的两种启动Qt Quick App模式

     现有两种启动Qt Quick App 模式: QQmlApplicationEngine搭配Window. QQuickView搭配Item.  qt默认使用第一种方法. QQmlApplicati ...

  7. 设置canvas的背景成白色

    解决方案一:将透明的pixel设成白色 因为png图片的背景都是透明的,所以我们可以寻找透明的pixel,然后将其全部设置成白色,核心代码如下: JavaScript Code复制内容到剪贴板 // ...

  8. DotnetCore 使用Jwks验证JwtToken签名

    [Fact] public async Task VerfiyJwtTokenUseJwks() { var jwt = @"your jwt token"; var wellKn ...

  9. 使用 NuGet 包管理器在 Visual Studio 中安装和管理包

    https://docs.microsoft.com/zh-cn/nuget/consume-packages/install-use-packages-visual-studio 通过 Window ...

  10. bzoj4199: [Noi2015]品酒大会 (并查集 && 后缀数组)

    据说用后缀自动机 + dp也能做 然而并不会 后缀数组的做法呢 就是先建个后缀数组,求出height值,此时如果直接找,复杂度是n ^ 2的,肯定会超时. 但是height大的值是不会对小的产生影响的 ...