JSONP是一种使用模式,人们常常把JSONP和JSON混淆,他们虽然有关系,但是描述的不是一个事物,JSONP是JSON with Padding的简称。本篇会说明JSONP是一个什么?怎么是去使用。
通俗讲,JSONP 为解决跨域而诞生。是为了基于浏览器Web请求不通源之间的请求。
具体讲,是解决不同源,被浏览器监管Javascript的安全限制。
https://www.sojson.com调用https://www.sojson.com/json/是不会跨域的。https://www.sojson.com 调用http://www.itboy.net/json/是跨域的,因为不同域名。 https://www.sojson.com调用http://a.sojson.com/search1_baidu.com.html 是跨域的。因为是不同二级域名。 https://www.sojson.com:8080调用https://www.sojson.com:8081 是跨域的。因为是不同端口。 https://www.sojson.com调用http://www.sojson.com 是跨域的。因为是不同请求协议,http和https。 188.188.188.20调用199.199.199.99 是跨域的。因为不同IP。 localhost调用127.0.0.1 也是跨域的。其实他也是不同域名。 前端代码,Javascript:
<script>
    //jsonp回调方法,一定要写在jsonp请求前面
    function callback(txt){
        alert(txt);
    }
</script>
<script src ="/layui/demo-testJsonp.shtml" type="text/javascript" ></script>
                    后端代码,Java:
/**
 * jsonp 测试
 * @return
 */
@RequestMapping(value="testJsonp",method=RequestMethod.GET)
@ResponseBody
public String testJsonp(){
	return "callback('test jsonp');";
}
					前端会alert弹出的内容“test jsonp”。
前端代码,Javascript:
<script>
    //jsonp回调方法,一定要写在jsonp请求前面
    function testjson(txt){
        alert(txt);
    }
</script>
<script src ="/layui/demo-testJsonp.shtml?callback=testjson" type="text/javascript" ></script>
                    后端代码,Java:
/**
 * jsonp 测试
 * @return
 */
@RequestMapping(value="testJsonp",method=RequestMethod.GET)
@ResponseBody
public String testJsonp(String callback){
	return callback +"('test jsonp');";
}
                    前端代码,Javascript:
<script>
var testjsonp = function(data){
    for(var i in data){
        alert( i +":" + data[i]);
    };
}
var demoJSONP = function () {
    //nowIp() 为获取当前的IP,这个函数是我自己的。
   $.getScript("https://open.onebox.so.com/dataApi?type=ip&src=onebox&tpl=0&num=1&query=ip&url=ip&ip="+nowIp()+"&callback=testjsonp");
}
</script>
                    
                    
					这个接口您不要去尝试使用,因为它的数据来自百度而已。
PHP代码:
<?php
    $data = ".......";
    $callback = $_GET['callback'];
    echo $callback.'('.json_encode($data).')';
    exit;
?>
                    前端代码,Javascript:
<script>
$.ajax({
    type : "post",
    url : "ajax.php",
    dataType : "jsonp",
    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
    jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
    success : function(json){
        alert('success');
    },
    error:function(){
        alert('fail');
    }
});
</script>
		综合技术交流:点击加入--> [SO JSON官方交流①群][收费]
综合技术交流:点击加入--> [SO JSON官方交流②群][免费]
要求:不能发广告、暴力、政治、付费教程,违者直接踢出。
备注:入群费用5元,没有QQ钱包,可以先支付宝 or 微信扫码支付5元赞助后,我拉您进去。QQ联系我。
扫码赞助:赞助二维码。
技术交流QQ群:①群259217951,②群166848545
站长邮箱:so@sojson.com
对页面内容有任何疑问和建议,请联系我们。
所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看
正在加载... ...