php手机端正局域网跨域如何设置

ziluopao 发布于 2016/06/07 22:35
阅读 239
收藏 0
PHP

先说一下场景环境是在本地,即http://localhost/wap

并且本地机也在局域网内,地址是http://192.168.10.22

在设置手机站时,在手机端登录测试时用的是http://192.168.10.22/wap

注:手机端登录的是手机wap站,主要是接收的ajax传来的值。

但是问题出来了,在pc端(即本机:127.0.0.1)登录http://192.168.10.22/wap 可以看到图片正确显示;

但是手机端图片不显示,当然这是跨域问题造成的,所以在控制器中写了header('Access-Control-Allow-Origin:*');

可是还不行,难道哪里有问题吗?

加载中
0
梦想岛
梦想岛
要用jsonp
0
ziluopao
ziluopao

引用来自“梦想岛”的评论

要用jsonp

看了一下jsonp的教程,原来基本原理是这个

<script>
        window.onload = function () {
            var oBtn = document.getElementById('btn');
            oBtn.onclick = function () {
                var oScript = document.createElement('script');
                oScript.src = '1.txt';
                document.body.appendChild(oScript);
            }
        }

    </script>
   

</head>
<body>
<input id="btn" type="button" value="按钮"/>


感觉它的关键点就是DOM操作,恐怕这就是刚接触jsonp并且对于js不是很熟的人不容易掌握的原因吧

0
ziluopao
ziluopao
下面是静态页的写法:
<script>
        function fn(data) {
            var oUl1 = document.getElementById('ul1');
            var html = '';
            for(var i = 0;i < data.length;i++){
                html += '<li>'+data[i]+'<li>';
            }
            oUl1.innerHTML = html;
        }
    </script>
    <script>
        window.onload = function () {
            var oBtn1 = document.getElementById('btn');
            oBtn1.onclick = function () {
                var oScript = document.createElement('script');
                oScript.src = 'getData.php?callback=fn1';
                document.body.appendChild(oScript);
            }
        }

    </script>


</head>
<body>
<input id="btn" type="button" value="按钮"/>
<ul id="ul1"></ul>    

其中后端提供数据的写法(getData.php)

<?php
$t = isset($_GET['t']) ? $_GET['t'] : 'num';
$callback = isset($_GET['callback']) ? $_GET['callback'] : 'fn1';


$arr1 = array('111111','22222222','33333333','4444444','555555555555555555555');
$arr2 = array('aaaaaaaaaaaa','bbbbbbbb','cccccccccccc','ddddddddd','eeeeeeeeeeee');


if ($t == 'num') {
 $data = json_encode($arr1);
} else {
 $data = json_encode($arr2);
}


echo $callback.'('.$data.');';





0
ziluopao
ziluopao

引用来自“ziluopao”的评论

下面是静态页的写法:
<script>
        function fn(data) {
            var oUl1 = document.getElementById('ul1');
            var html = '';
            for(var i = 0;i < data.length;i++){
                html += '<li>'+data[i]+'<li>';
            }
            oUl1.innerHTML = html;
        }
    </script>
    <script>
        window.onload = function () {
            var oBtn1 = document.getElementById('btn');
            oBtn1.onclick = function () {
                var oScript = document.createElement('script');
                oScript.src = 'getData.php';
                document.body.appendChild(oScript);
            }
        }

    </script>


</head>
<body>
<input id="btn" type="button" value="按钮"/>
<ul id="ul1"></ul>    

其中后端提供数据的写法(getData.php)

<?php
$arr1 = array('111','22222','33333','444444444','5555555');
echo 'fn('.json_encode($arr1).');';





但上面的结果确有点奇怪,就是多出几个空白li

如图,不知为啥

返回顶部
顶部