JSONP

JSONP
起始JSONP并不是通过AJAX实现,而是通过script标签的加入。我们知道通常在标签中src指向地址时,是可以直接通过的,而不需要考虑跨域

1、jsonp是通过创建script标签并且放在页面中,然后给通信地址就可以完成通信
var script=document.createElement("script");
script.src="地址";
document.body.appendChild(script);
2、jsonp通过地址传参方式将数据发送给服务端
3、jsonp在地址最后描述一个参数的值是一个函数名,通过执行该函数完成服务端到前端

跨域  当前后端ip或者端口不同时,就叫做跨域
解决跨域问题
orss方法 在服务器设置响应头Access-Control-Allow-Origin是指定的地址或者*

jsonp方法 
服务代理方式 客服端请求服务端时如果出现端口和ip不同就算跨域。
但是服务端请求服务端就不算跨域   可以在客户端的相同ip和端口的服务中创建一个服务器
前端访问本地的服务器,然后由本地的服务器做中介与远程服务通信,然后回传

// jsonp方法
// jsonp 和 json没有关系
// jsonp和ajax也没关系
// function fn1(a,b){
//     console.log(a,b);
// }

function jsonp(data){
    var str="?";
    for(var prop in data){
        str+=prop+"="+data[prop]+"&";
    }
    str=str.slice(0,-1);
    var script=document.createElement("script");
    script.src="http://localhost:8000"+str+"&callback=fn1";
    console.log(script.src);
    document.body.appendChild(script);
}
jsonp({a:10,b:20});
百度搜索提示
function callback(data){
    console.log(data);
}
var script=document.createElement("script");
script.src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=王羲之&json=1&p=3&sid=22084_1436_13548_21120_22036_22073&req=2&csor=0&cb=callback";
document.body.appendChild(script);
jQuery使用jsonp
var baidu={
    sug:function(data){
        console.log(data);
    }
}

$.ajax({
    url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
    data:"wd=剑与远&json=1&p=3&sid=22084_1436_13548_21120_22036_22073&req=2&csor=0",
    dataType:"jsonp",
    jsonp:"callback",
})

// 通过jQuery的ajax方法设置datatype和jsonp就可以完成jsonp通信

// 涉及到跨域问题报错
// $.getJSON("https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=剑与远征&json=1&p=3&sid=22084_1436_13548_21120_22036_22073&req=2&csor=0&cb=callback",function(data){
//     console.log(data);
// })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值