免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13819 | 回复: 10

用json和script标签,解决ajax的跨域问题 [复制链接]

论坛徽章:
0
发表于 2007-09-10 12:08 |显示全部楼层
用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


  1. <script>

  2. var element = document.createElement("script");

  3. function createScript(compId,dataId){        
  4.         element.src = "http://othersite.com/json.php?comp_id=" + compId + "&data_id=" + dataId + "";
  5.         element.type = "text/javascript";
  6.         element.language = "javascript";
  7. }

  8. function writeContent(){
  9.         alert(productJSON.product[0].name);
  10. }

  11. window.onload = function(){
  12.         createScript(1,2);
  13.         document.getElementsByTagName("head")[0].appendChild(element);
  14. }

  15. if(document.all){
  16.         element.onreadystatechange = function(){//IE用
  17.                 var state = element.readyState;
  18.                 if (state == "loaded" || state == "interactive" || state == "complete") {
  19.                         writeContent();
  20.                 }
  21.         };

  22. } else {
  23.         element.onload = function() {//FF用
  24.                 writeContent();
  25.         };
  26. }


  27. </script>
复制代码



下面是json.php   echo出来的内容
var productJSON = {'product': [
{'name' : '物件名1'},
{'building' : '建物名1'},
{'address' : '5'}
]
};

论坛徽章:
0
发表于 2007-09-10 12:10 |显示全部楼层
json 跟 xml 没什么区别
一样好使
有时觉的,json解析起来比xml好用

php5.2后,已经开始提供json的函数
framework中也有json的类

论坛徽章:
0
发表于 2007-09-10 17:52 |显示全部楼层
你这个做法也未免有点。。。。。。。。

论坛徽章:
0
发表于 2007-09-11 08:35 |显示全部楼层
有点什么呢?
我试了soap,对于客户端ajax调用soap,初级用户肯定不行!

只有这个办法最简单了

论坛徽章:
0
发表于 2007-09-11 12:53 |显示全部楼层
有一些跨域获取数据的动作你完全可以交给php之类的服务器脚本来做。干吗非罗嗦的把个js加到页面里面。你的js越复杂,跨平台风险就越大。

论坛徽章:
0
发表于 2007-09-11 13:51 |显示全部楼层
我现在已经兼容ff和IE了
只要在这两个上没问题就已经OK了

因为客户的可能没有php,或者是用asp,jsp,我可能需要提供三种不同的服务器脚本,所以用js
一次性做好js脚本,让客户调用就OK了
这样工作量最少,有问题只需要改动一个文件

论坛徽章:
0
发表于 2007-09-12 19:16 |显示全部楼层
动态调用JS,这和用不用JSON和AJAX无关。

论坛徽章:
0
发表于 2007-09-16 10:59 |显示全部楼层
原帖由 powerpolly 于 2007-9-12 21:16 发表
动态调用JS,这和用不用JSON和AJAX无关。

支持!

上面的代码,和AJAX传输没有任何关系。json.php echo出来的内容,并不是JSON数据格式,只能说是json data inside。

论坛徽章:
0
发表于 2007-10-08 14:56 |显示全部楼层
完全没有必要

论坛徽章:
0
发表于 2007-10-22 17:05 |显示全部楼层
应该遵守安全规则
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP