首页 > js跨域问题,有没有很简单的方法呢

js跨域问题,有没有很简单的方法呢

以下是同一主域名不同子域名的情况,网上查了很多方法比如什么8种常用方法,发现都不是很好实践,大伙帮看看怎么能比较简单点,就是page1.html 通过ajax访问到echo.php数据,谢谢

http://a.w1.com/page1.html:

<div id="div1"></div>

<script>
new Core.AjaxRequest({
    url: "http://w1.com/api/echo.php",
    target:"div1"
});
</script>

http://w1.com/api/echo.php:

<?php
echo "ajax请求数据";

==================================
其实我是希望用js原生的方法解决这个问题,解决了http://a.w1.com访问http://w1.com跨域问题,谢谢各位
目前已经找到解决办法是:
http://a.w1.com/page1.html

<script>
function createScript(sUrl){
        var oScript = document.createElement("script");
        oScript.type = "text/javascript";
        oScript.src = sUrl;
        document.getElementsByTagName("head")[0].appendChild(oScript);
}

createScript("http://w1.com/api/echo.php?callback=dosomething");

function dosomething(jsondata){
    document.getElementById("div1").innerHTML = jsondata;
}
</script>

http://w1.com/api/echo.php:

<?php
$callback = $_GET['callback'];//得到回调函数名
$data = array('a','b','c');//要返回的数据
echo $callback.'('.json_encode($data).')';//输出
?>

简单的没有的,方法很多,看你如何权衡利弊


我觉得比较好用的跨域方式为HTML5的postMessage,这里有一个封装的方法,你可以看看

iframe跨域通信的通用解决方案-第二弹!(终极解决方案)


php代码加一句这个再echo就好了 header('Access-Control-Allow-Origin: *');


JQ 的 ajax 用jsonp方式请求 不是够简单了吗?


跨子域的话,设置document.domain = w1.com 试试?


jQuery下Ajax请求的参数加上fn=?,类型改为jsonp即可:

$.get('http://w1.com/api/echo.php?fn=?',function(msg){
    alert(msg);
},'jsonp');

服务器代码要修改为:

$fn = $_GET('fn');
echo $fn."(ajax请求数据)";

底层实现就不贴了。。。


//一个简单的demo
//前端实现
$.ajax({
    type : "get",
    url : "http://w1.com/api/echo.php",
    dataType : "jsonp",
    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
    astnc: false,
    success : function(result){
        console.log(result);
    },
    error:function(error){
        console.log(error);
    }
});

// php

<?php
 
$callback = isset($_GET['callback']) ? trim($_GET['callback']) : ''; //jsonp回调参数,必需
$date = array("age"=>$_GET['age'], "message"=>$_GET['age']);
$date["msg"]="err";
$date["info"]="因人品问题,发送失败";
$tmp= json_encode($date); //json 数据
echo $callback . '(' . $tmp .')';  //返回格式,必需
 
?>
【热门文章】
【热门文章】