前两天碰到跨域的问题, 其实用js很容易就解决了(如果是php中我们可以这样写echo "<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://www.xxxx.com?act=123\"></script>")
如果在html我们就直接可以用window.location.href= "";
但是这些都是有去无回的,我们并不知道在另一个服务器上是否执行成功
有同学会说用ajax,童鞋ajax是不能跨域的,如果ajax能跨域那就太不安全了,
但是我们可以通过GetJson来实现:
使用实例:js 中
var url = http://www.xxxxx.com?act=1223;
jQuery.getJSON(url +”&jsoncallback=?”, function(data){
alert(”return msg:” + data.msg);
});
在服务端程序:
$visitor = $_GET['name'];
$callback = $_GET['jsoncallback'];
$msg = ‘hello ‘ . $_GET['name'] . ‘, this is server B!’;
//服务端返回
$json_data = ‘{"msg”:" '. $msg . ‘”}";
echo $callback . ‘('. $json_data . ‘)';
这样,在客户端得到的返回程序可能是:
JQUET0988788({”msg”:”hello a, this is server B!”})
总之,我们要做的是两件事:
1. 在请求地址里加上参数 jsoncallback=?
2. 在服务端程序里把jsoncallback的值和数据一起返回,形如 $callback . ‘('.$json_data. )'
至此,问题解决了。