跨域问题的解决方法,

20151111,

解决方法一、利用带有SRC的标签进行请求。

src是可以请求外部资源的一种属性,恰好<script>标签含有该属性,

假设有含有以下代码的一个jsonp.php文件:

<? php
$jason_array=Array("FlightNo"=>"CA111","FlightFrom"=>"北京","FlightTo"=>"上海");
echo jason_encode($jason_array);
?>
因为每次请求都会有一个Response Headers,因为利用了<script>标签,所以在以上代码中加入一段话更改响应头,

让内容作为javascript响应输出:

<? php
header("content-type:text/javascript");
$jason_array=Array("FlightNo"=>"CA111","FlightFrom"=>"北京","FlightTo"=>"上海");</span>
echo "callBackFlight( $jason_array )";
?>
 同时在原html中引入下面两段代码: 

function callBackFlight(data){
     console.log(data.FlightNo);
     console.log(data.FlightNo);
     console.log(data.FlightNo);
}
<pre name="code" class="html">$(function(){
    $("btn").click(function(){
//1.生成一个script标签
var script=$('<script>');
//2.指定script属性
script.attr("type","text/javascript");
script.attr("src","http://xxx/jasonp.php");
//3.将生成的标签添加到head中
$("head").append(script);
})
});
特别要注意的是第一个函数必须写在第二个之前。
</pre><h2><span style="background-color:rgb(255,255,255)">方法二,用ajax的方法来解决</span></h2><pre name="code" class="html"></pre><pre name="code" class="html">
</pre>


<?php 
	//更改响应消息头,让内容作为javascript响应输出
	header("content-type:text/javascript");
	$callback=$_REQUEST["callback"];
	$array = Array("FlightNO"=>"CA1111","FlightFrom"=>"北京","FlightTo"=>"上海");
	$json_array =  json_encode($array); //相当于 callBackFlight 的参数值
	echo "$callback($json_array)";
?>

下面用jQuery的Ajax来写。

$(function(){
$("#btn").click(funcion(){
$.ajax(url:"http://xxxx/jasonp.php",
type:"get",
dataType:"jasonp",
jasonp:"callBack"
,success:function(data){
console.log(data.FlightNo);}
//success可以用jsonpCallback:"getFlight"取代
});});});




未完待续。。。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小魏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值