一 概念

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. 虚拟磁盘VHD文件压缩方法

    问题描述 因工作需要在Mac上跑了一个VirtualBox虚拟win7,使用对win系统友好的vhd格式作为虚拟硬盘.经过一段时间使用发现vhd占用空间远大于虚拟磁盘使用量,想办法减减肥才行. 步骤整 ...

  2. centos7下自动备份mysql数据库

    环境:centos7 .mysql5.7 第一步:创建自动备份脚本文件 mkdir backup cd backup touch backup.sh 第二步:在备份脚本文件中写入备份脚本 vim ba ...

  3. Qt VS Tools插件官方下载及安装

    下载 官方下载地址:https://download.qt.io/development_releases/vsaddin/(国外网站直接打开超级慢) 找到对应的VS版本下载 安装 下载完成后安装,打 ...

  4. 2019-08-09 纪中NOIP模拟B组

    T1 [JZOJ1035] 粉刷匠 题目描述 windy有N条木板需要被粉刷. 每条木板被分为M个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一 ...

  5. 使用listView有感

    et listView = new ccui.ListView();this.addChild(listView,9999);listView.setDirection(ccui.ScrollView ...

  6. WebRTC 之ICE浅谈

    前言 ICE全称Interactive Connectivity Establishment:交互式连通建立方式. ICE参照RFC5245建议实现,是一组基于offer/answer模式解决NAT穿 ...

  7. 【15】【有点特殊的dp】 剪绳子

    题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]k[1]...* ...

  8. 修改oracle数据库用户名和密码

    第一步:连接数据库 使用ssh工具以root身份连接服务器, 然后切换到oracle用户:su - oracle(回车) 使用sqlplus连接数据库:sqlplus /nolog(回车) 以管理员身 ...

  9. 以POST方式发送

    URL url = null; String inputLine = null; HttpURLConnection httpurlconnection = null; try { //取上级电警平台 ...

  10. python3练习100题——019

    原题链接:http://www.runoob.com/python/python-exercise-example19.html 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数&q ...