首页 > 代码库 > 实现跨域请求的4种方法
实现跨域请求的4种方法
模拟服务器端的PHP文件:
service:
<?php
//允许访问
header(‘Access-Control-Allow-Origin:*‘);
@$callback=$_GET[‘callback‘];
//创建数据
$userInfo = array(‘id‘=>1,‘username‘=>‘Scott Jeremy‘,‘email‘=>‘673457942@qq.com‘);
//编译成JSON
$result = json_encode($userInfo);
echo $callback."({$result})";
service2:
<?php
header(‘Access-Control-Allow-Origin:*‘);
$userInfo = array(‘id‘=>1,‘username‘=>‘Scott Jeremy‘,‘email‘=>‘673457942@qq.com‘);
echo json_encode($userInfo);
原生Javascript:
function jsonpCallback(result) {
//alert(result);会返回jsonpCallback({"id":1,"username":"Scott Jeremy","email":"673457942@qq.com"})
alert(‘My :‘+result.username+‘.‘+‘My email:‘+result.email);
}
//创建script标签
var script = document.createElement(‘script‘);
//定义script标签的url
script.src = http://www.mamicode.com/‘http://localhost/service.php?callback=jsonpCallback‘;
//把标签放到head中
document.getElementsByTagName(‘head‘)[0].appendChild(script);
利用jQuery实现跨域请求有三种方法:
1:AJAX请求
$(‘#btn1‘).on(‘click‘,function () {
$.ajax({
//设置url
url:‘http://localhost/service2.php‘,
//用什么方式请求
type:‘GET‘,
//返回来用什么形式解析
dataType:‘json‘,
success:function (data) {
alert(data.username);
alert(data.email);
},
error:function () {
alert(‘error‘);
}
});
});
2:JSONP实现跨域请求
$(‘#btn2‘).on(‘click‘,function () {
$.ajax({
url:‘http://localhost/service.php‘,
type:‘GET‘,
dataType:‘JSONP‘,
//JSONP回调函数名
jsonp:‘callback‘,
//JSONP回调后的JSON名,相当于JSON文章中的book
jsonpCallback:‘Jeremy‘,
success:function (data) {
alert(data.username);
alert(data.email);
}
})
});
3:getJSON(最简单的一种:缩写)
$(‘#btn3‘).on(‘click‘,function () {
$.getJSON(‘http://localhost/service.php?callback=?‘,function (data) {
alert(data.username);
alert(data.email);
})
});
实现跨域请求的4种方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。