首先我们应该知道 Ajax 和 JSONP 可以与后台通信, 获取数据和信息, 但是又不用刷新整个页面, 实现页面的局部刷新.
接下来我们就来看一下 Ajax 和 JSONP 的区别.
Ajax 和 JSONP 的区别:
Ajax 是一种发送 http 请求与后台进行异步通讯的技术. 其原理是实例化 xmlhttp 对象, 使用此对象与后台通信.
一个完整的 Ajax 请求一般包括以下步骤:
(1)实例化 XMLHttpRequest 对象
(2)连接服务器
(3)发送请求
(4)接收响应数据
JSONP 是一种可以实现跨域发送 http 请求的数据通信格式, 可以嵌在 Ajax 中使用. 其原理是利用 script 标签可以跨域链接资源的特性.
JSONP 由两部分组成: 回调函数和数据, 回调函数一般是在浏览器控制, 作为参数发往服务器端(当然, 你也可以固定回调函数的名字, 但客户端和服务器端的名称一定要一致). 当服务器响应时, 服务器端就会把该函数和数据拼成字符串返回.
JSONP 的请求过程如下:
请求阶段: 浏览器创建一个 script 标签, 并给其 src 赋值.
发送请求: 当给 script 的 src 赋值时, 浏览器就会发起一个请求.
数据响应: 服务端将要返回的数据作为参数和函数名称拼接在一起 (格式类似 "jsonpCallback({name:'abc'})") 返回. 当浏览器接收到了响应数据, 由于发起请求的是 script, 所以相当于直接调用 jsonpCallback 方法, 并且传入了一个参数.
最后: JSONP 只支持 get 请求, Ajax 支持 get 和 post 请求.
来源: http://www.qdfuns.com/article/51117/bb559a123d9b004de6e6de1aac68afdd.html