Jquery利用getScript实现跨域请求数据

假设http://www.otherdomain.com/data.js 这个远程文件data.js内容如下:

testData={
    "rool": [
        {
            "desc": "小鸟_描述",
            "img": "http://t2.qpic.cn/mblogpic/47962be47270d036517c/160",
            "link": "2907109968",
            "title": "小鸟_标题"
        }
    ],
    "blockid": 1,
    "itemid": 1,
    "opt": 0,
    "pageid": 1,
    "tot": 1,
    "tplid": 0,
    "type": "mod_list_pic"
};
jQuery.getScript("http://www.otherdomain.com/data.js", function(){
   var data = testData;
   alert(data["rool"][0]["desc"]);//输出 “小鸟_描述”
});

说明:ajax不能跨域问题,大家应该都清楚。但是script标签能够加载其他域的文件,所以我们可以利用这点,进行跨域get操作。
这种方案要求跨域文件返回的数据必须是合法的JSON格式或者如JS文件的格式。
这种方式比较简单,只需要几行代码即可。如果不用jquery的话,可以通过动态创建script标签,然后设置src值,不过得注意判断script内容加载是否完成。

当然,跨域的方法很多,这里说的只是其中一种。

apache 配置反向代理解决javascript ajax跨域问题

1、打开apache下的http.conf 文件。
找到

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so

把前面的#去掉。(如果不开启这3个的话,ajax post 数据会出现http 500错误)

2、在http.conf文件末尾加上以下代码

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass /foo/ http://foo.example.com/bar/
ProxyPassReverse /foo/ http://foo.example.com/bar/

说明 /foo/ 是本地服务器根目录下的foo文件夹。 这个文件夹映射到http://foo.example.com/bar/ 这里。

3、重启apache即可!

js就可以实现跨域post了。

$.post("http://localhost/foo/test.php")

实际是post到:http://foo.example.com/bar/test.php

相关参考网址:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_proxy.html

http://shiningray.cn/proxypass-directive-in-apache.html

http://blog.csdn.net/paulluo0739/archive/2008/04/08/2260137.aspx