前言:
现在兄弟们对“ajax报文”可能比较注意,兄弟们都想要分析一些“ajax报文”的相关资讯。那么小编也在网上汇集了一些有关“ajax报文””的相关文章,希望同学们能喜欢,你们一起来了解一下吧!1、先来两个jsonp的写法看看
//简写形式
$.getJSON(";busiId=101&jsonpCallback=?",
function(data){
$("#showcontent").text("Result:"+data.result)
});
*/
$.ajax({
type : "get",
async:false,
url : ";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>
原文链接:
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函数
标签: #ajax报文