JQuery ajax jsonp 跨域理解

boyanx6个月前技术教程18

1、先来两个jsonp的写法看看


//简写形式


$.getJSON("http://app.example.com/base/json.do?sid=1494&busiId=101&jsonpCallback=?",

function(data){

$("#showcontent").text("Result:"+data.result)

});

*/


$.ajax({

type : "get",

async:false,

url : "http://app.example.com/base/json.do?sid=1494&busiId=101",

dataType : "jsonp",//数据类型为jsonp

jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数

success : function(data){

$("#showcontent").text("Result:"+data.result)

},

error:function(){

alert('fail');

}

});


JSONP是JSON with Padding的略称,JSONP为民间提出的一种跨域解决方案,通过客户端的script标签发出的请求方式。


2同源请求和跨域请求

现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。


而所有非同源的请求(即 域名,协议,端口 其中一种或多种不相同),都会被作为跨域请求,浏览器会将其非同源的响应数据丢弃。


这里可以理解为是浏览器在搞事情,服务端确确实实有返回数据,浏览器接收到返回的数据,发现我们请求的是一个非同源的数据,浏览器再将其响应报文丢弃掉。


而通过一些标签发出的请求则不会被进行同源检查,比如script标签,img标签等等,本文讲述JSONP便是通过script标签做的请求。


例如:1、声明一个全局变量

window.myCallback = (res)=>{ //声明一个全局函数 'callback',用于接收响应数据 console.log(res) }

2、发出请求

<script>

window.myCallback = (res)=>{//这里为上一步定义的全局函数

console.log(res)

}

</script>

<script url="xxx?callback=myCallback">

//script标签的请求必须在写在定义全局函数之后

//这里需将全局函数的函数名作为参数callback的value传递

//这里callback这个键名是前后端约定好的

</script>

原文链接:
https://blog.csdn.net/weixin_44411976/java/article/details/100035936

3、服务端返回数据格式

myCallback({ //一个函数的调用,将数据作为参数传递进去,再将整个函数的调用返回给客户端 name:'ahreal', age:18 })

4、客户端接收到服务端的相应,相当于:

<script>

window.myCallback = (res)=>{//这里为上一步定义的全局函数

console.log(res)

}

</script>

<script>//将接收到的数据作为script标签里面的内容展开执行

myCallback({

name:'ahreal',

age:18

})

</script>


参数

jsonp

类型:String

在一个 jsonp 请求中重写回调函数的名字。这个值用来替代在 "callback=?" 这种 GET 或 POST 请求中 URL 参数里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 会导致将 "onJsonPLoad=?" 传给服务器。

jsonpCallback

类型:String

为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。这主要用来让 jQuery 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存 GET 请求的时候,指定这个回调函数名。

如果不设置 jquery会自动调用seccess函数


标签: jquary

相关文章

10个免费高清图片网站,良心推荐,收藏就是学会了

我来分享一波无版权的高清素材库。1、Pixabay一个拥有160万个可在任何地方使用的免费无版权图片,有需要的小伙伴都可以下载。2、Pexels网站上提供大量的高清图片,上面的所有图片都可以免费商用。...

小白工具在线视频编辑,视频加文字,提高创作效率,你的得力助手

小白工具是是一款功能丰富、操作简单的在线视频添加文字或字幕工具,在视频编辑场景中优势显著。支持多种字体样式 视频编辑 丰富多样 在线处理 操作简单功能丰富多样:该工具提供了大量免费可商用字体,种类多达...

PPT文件中如何插入视频或音频文件:详细指南

在如今的演示文稿中,插入视频和音频文件来增强演示文稿的视频效果和吸引力也越来越普遍。它们不仅能够增强演示的视觉效果,还能帮助观众更好地理解内容。然而,许多内容创作者在将视频或音频插入PPT时可能会遇到...

需要提升增值税专用发票最高开票限额?操作指南在这里

财务小吴申税小微,我们公司的增值税专用发票是万元版的,可是我这个月做了几笔大单子,需要开很多张近十万的发票,这下开票要开到脑壳痛了,可怎么办啊?别担心!您可以在电子税务局做发票升版。今日小课堂:申税小...

HTML中script标签中的那些属性(html script属性)

HTML中的<script>标签详解 在HTML中,<script> 标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用 <scrip...

常用半导体中英对照表2(建议收藏)

微电子辞典大集合 整理了一些常用的半导体术语的中英文对照表,希望对大家有所帮助。如有出错之处,请不吝指正,感谢!(按首字母顺序排序)AAbrupt junction 突变结Accelerated t...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。