分享编程~
 

AJAX跨域问题解决方式

AJAX跨域问题解决jquery异步请求跨域问题解决方式

天天特卖抢好货

解决方案:

一、jsonp方式(支持GET不支持POST):

var formData = new FormData(); // 实例化创建form表单
    formData.append("title", '越加网'); // 参数一
    formData.append("title", 'https://www,yj521.com'); // 参数二
$.ajax({
  url: "http://yj521.com/ajax/jsonp.php",
  dataType: "jsonp",
  jsonp: "callback",
  data: formData,
  context: document.body,
  success: function(data) {
    console.log(data);
  }
});

请求的服务端代码如下(以PHP语言为例):

$params = isset($_REQUEST) ? $_REQUEST : array(); // 接口接收的参数
$result = array('code'=>'Success',data=>$params); //接口要返回的数据
$data = json_encode($result);	// 进行转json字符串
$callback = $_GET["callback"];	// 获取callback参数
echo $callback . "(" . $data . ")"; // 拼装输出

这个调用实际上的实现原理是在网页中构造一个script标签,将src设置为对应的url,并增加上相应的callback参数,形如如下格式:<script src="https://yj521.com/test/ajax/index.php?callback=jQuery211018970995225637144_1465350372062&_=1465350372063"></script>

服务端返回的内容就是一段js代码类似:18970995225637144_1465350372062({"id":"1","name":"tom"})。

取到该段js代码后就会执行这个函数,从而实现回调ajax请求时设置的success方法。

二、服务端设置支持跨域(支持GET和POST请求):

js代码:

var formData = new FormData(); // 实例化创建form表单
    formData.append("title", '越加网'); // 参数一
    formData.append("title", 'https://www,yj521.com'); // 参数二
$.ajax({
  type: "POST",
  url: "http://yj521.com/test/ajaxkuayu/test.php",
  dataType: "json",
  data: formData,
  success: function(data) {
    console.log(data);
  }
});

服务端代码(以PHP语言为例):

header('Access-Control-Allow-Origin:*');  // 表示支持所有来源的域进行请求,实际在操作过程中可以设置为指定域
$params = isset($_REQUEST) ? $_REQUEST : array(); // 接口接收的参数
$result = array('code'=>'Success',data=>$params); // 接口要返回的数据
echo json_encode($result);	// 进行转json字符串并输出
exit;


上一篇:html5移动端网站侧边栏导航菜单下一篇:谷歌浏览器添加json格式化阅读插件JsonView
赞(1) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝