js是ajax,JS之Ajax

Asynchronous Javascript And XML (异步的JavaScript和XML)

由下列技术组合而成

1.使用CSS和XHTML来表示

2.使用DOM模型来交互和动态显示

3.数据互换和操作技术,使用XML与XSLT

4.使用XMLHttpRequest来和服务器进行异步通信

5.使用javascript来绑定和调用

传统Web应用程序 VS 采用AJAX技术的Web应用程序 主要差别:不是 JavaScript,不是 HTML/XHTML和 CSS,而是采用了 XMLHttpRequest 来向服务器异步的请求 XML 数据。

XMLHttpRequest对象的属性9c45473a757ce3d9f99e248aadc6ef80.png

XMLHttpRequest对象的方法f77c32f090aab7d4e4e584be3b145f28.png

创建ajax的步骤

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。【原生创建ajax可分为以下四步,要记住】。

function ajax(url, success, fail){

// 1. 创建XMLHttpRequest对象,创建连接

var xhr = null;

xhr = new XMLHttpRequest()

// 2. 连接服务器

xhr.open("get",demo.php?name=tsrot&age=24,true);

//or xhr.open("POST",demo.php,true);

//第一个参数表示请求类型的字符串,其值可以是GET或者POST

// 3. 发送请求

xhr.send();

//一般情况下,使用Ajax提交的参数多是些简单的字符串,

//可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null或为空。

// 4. 处理响应

xhr.onreadystatechange = function(){

if(xhr.readyState == 4){

if(xhr.status == 200){

success(xhr.responseText);

//responseText:获得字符串形式的响应数据,

//可用JSON.parse(xhr.responseText)转化为JSON对象

//responseXML: 获得 XML形式的响应数据

} else { // fail

fail && fail(xhr.status);

}

}

}

// readyState:ajax处理过程

// 0:请求未初始化(还没有调用 open())。

// 1:请求已经建立,但是还没有发送(还没有调用 send())。

// 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

// 3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响

// 4:响应已完成;您可以获取并使用服务器的响应了。

// status属性:

// 200:"OK"

// 404: 未找到页面

}

复制代码谈谈JSONP

JSONP是怎么产生的?Ajax直接请求普通文件存在跨域无权限访问的问题,不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响,不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如< script >、< img >、< iframe >。因此,想通过纯web端跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理。JSON的纯字符数据格式可以简洁的描述复杂数据,JSON还被js原生支持。客户端在对JSON文件调用成功之后,也就获得了自己所需的数据。为了便于客户端使用数据,逐渐形成了一种【非正式传输协议】,人们把它称作【JSONP】,该协议的一个【要点】就是【允许用户传递一个callback参数给服务端】,然后服务端【返回数据】时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

一句话总结:作用:为了实现跨域请求,通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。

简单例子

function jsonpCallback(result) {

console.log(result);

for(var i in result) {

console.log(i+":"+result[i]);

}

}

//callback参数指示生成JavaScript代码时要使用的函数jsonpcallback

//用XMLHttpRequest时,我们得到一个字符串,要用JSON.parse把字符串转化成对象。

//使用jsonp时,script标志会解析并执行返回的代码,等我们处理数据时,已经是一个JavaScript对象了

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值