IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

研究ext发现ajax跨域实现

Codyy技术团队 2009-10-20 22:51:13 累计浏览 4,826 次
本机暂存

    之前一直没有深入研究过ajax跨域实现的问题,最近研究ext发现他的例子里可以请求远程的页面,它的方法叫scriptTag。其实就是使用动态载入js脚本的方式来实现的。

    转一个文章过来,具体就不写了,ext是通过传一个callbak方法动服务器页面,在返回结果中加上执行 callbak方法,总得来说服务器代码还要自己可以控制,如果完全想读别人的数据还是做不到。

    作者:zhanglp888

    用json和script标签,解决ajax的跨域问题。

    ajax的XMLHttpRequest因为js的安全问题是不能跨域的,但是<script></script>可以用src=”http://otherSite.com/a.js”可以跨域,所以动态写入一个<script></script>就OK了。

    scr指向一个其它站点的文件,比如:a.php?id=15

    让a.php echo() 一个json的字符串

    json 参考:http://www.json.org

    下面为动态加载script标签的js

以下是代码片段:
<script>
var element = document.createElement(“script”);
function createScript(compId,dataId){
element.src = “http://othersite.com/json.php?comp_id=” + compId + “&data_id=” + dataId + “”;
element.type = “text/javascript”;
element.language = “javascript”;
}
function writeContent(){
alert(productJSON.product[0].name);
}
window.onload = function(){
createScript(1,2);
document.getElementsByTagName(“head”)[0].appendChild(element);
}
if(document.all){
element.onreadystatechange = function(){//IE用
var state = element.readyState;
if (state == “loaded” || state == “interactive” || state == “complete”) {
writeContent();
}
};
} else {
element.onload = function() {//FF用
writeContent();
};
}
</script>

    下面是json.php echo出来的内容

以下是代码片段:
var productJSON = {’product’: [
{’name’ : ’物件名1’},
{’building’ : ’建物名1’},
{’address’ : ’5’}
]
};

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. 使用python/casperjs编写终极爬虫-客户端App的抓取 (累计阅读 12,961)
  2. YSLOW法则中,为什么yahoo推荐用GET代替POST? (累计阅读 11,839)
  3. JSONP与POST方式请求 (累计阅读 11,294)
  4. jQuery插件---轻量级的弹出窗口wBox. (累计阅读 10,772)
  5. 10个强大的Ajax jQuery文件上传程序 (累计阅读 8,854)
  6. JSON和JSONP的区别 (累计阅读 8,468)
  7. 优雅绝妙的Javascript跨域问题解决方案 (累计阅读 8,067)
  8. jQuery中getJSON跨域原理详解 (累计阅读 6,349)
  9. nyroModal:强大的jQuery弹出层插件 (累计阅读 5,918)
  10. ajax-cross-domain (累计阅读 5,906)