gongyijie

Ajax本身是不可以跨域的,由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求

其实设置了dataType: \'jsonp\'后,$.ajax方法就和ajax XmlHttpRequest没什么关系了,取而代之的则是JSONP协议。JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。

$.ajax({
type:"get",
url:"http/qq....",/*url写异域的请求地址*/
dataType:"jsonp",/*加上datatype*/
jsonpCallback:"cb",/*设置一个回调函数,名字随便取,和下面的函数里的名字相同就行*/
success:function(){
}
});
Jsonp原理: 
在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)

分类:

技术点:

相关文章:

  • 2021-09-22
  • 2021-12-04
  • 2021-10-23
  • 2021-07-14
  • 2021-09-12
  • 2021-09-12
  • 2021-09-12
  • 2021-09-04
猜你喜欢
  • 2021-09-12
  • 2021-05-27
  • 2021-11-14
  • 2021-11-27
  • 2021-09-12
  • 2021-11-12
  • 2021-06-15
相关资源
相似解决方案