今天把一些服务的相关数据放到了本地的另一台服务器上,需要弄个接口去读取这服务器上的文件,但是这服务器只放在内网使用,所以用curl是不行的了,就想着要用js去访问。
1、一开始是想着使用document.write()这个方法:
代码:document.write("php访问地址+参数"); ......
然后php返回数据是一个可执行的js语句,如:echo "var returnData = {'flag':1}";
然而用这个方法会把页面的其他东西都清掉,所以这个方法是不行的了。
否定这个方法后,只能在网上找了一下其他方法。
2、在网上搜索“js 跨域”,然后找到了JQuery的getJSON方法:
1)根据网上给出的例子,很快就写出了以下代码:
JS:var url = "地址+参数" + "&callback=?";
$.getJSON(url, function(data){
// 返回之后要做的事
return;
});
PHP:echo '{"flag":1}';
然后很兴奋地刷新页面。然而它报错了:Uncaught SyntaxError:Unexpected token :
我去!就是这个错误,我调了2小时。。。
2)黎明的曙光:
在群里问了也问了,百度也百度了。正当我心灰意冷准备放弃的时候,突然间就看到了一丝刺眼的光芒照进我的眼里。
地址在这里:http://blog.163.com/lvshutao@126/blog/static/164637467201442253942499/?latestBlog,你们自己去看吧,完,开个玩笑
先感谢一下这位哥们,我的错误正如这位哥们写到的,少了点返回数据,然后我把返回数据按照这个来加上,就可以了,稍有不同的就是我传的参数叫callback,不同于这哥们的jsoncallback,所以要改一下,最终代码是:
JS: var url = "地址+参数" + "&callback=?";
$.getJSON(url, function(data){
// 返回之后要做的事
return;
});
PHP: $b = json_encode($returnArray);
header("Access-Control-Allow-Origin:ht-tp:xxx.cn");//(1)
echo "{$_GET['callback']}({$b})";//(2)
↑ 整篇文章的重点,其他的都是废话 ↑
PS:我用的JQuery是jquery-1.8.3.min.js这个版本
第一次使用JQuery,所以不熟,以后会多研究,完!