Apr 18, 2009

Javascript跨域传递JSON

Javascript无法跨域访问,这是Javascript的安全机制,跨域访问的定义可以这么说,www.google.com域下的脚本不能访问www.amazon.com域,www.google.com当然也不能访问子域名site.google.com域。JS如果要跨域访问数据,AJAX的http请求跨域数据会报错。如果需要用JS请求跨域的数据,JSON是很好的选择。跨域获取JSON并不是异步请求,而是应用script标签的src属性获取到服务器生成的JSON格式化文本,例:

<script type="text/javascript">
function jsonCallback(resp) { //jsonCallback是下面script标签回调的,resp将返回的JSON作为参数传递
  var entris =  resp.feed.entry
}
</script>
<script type="text/javascript" src="http://fanlog.blogspot.com/feeds/posts/default/?max-results=10&start-index=1&alt=json-in-script&callback=jsonCallback"></script>

script标签src的地址,是blogger API返回的JSON格式化数据,数据格式如下:

jsonCallback({"feed":["content",{"$t":"第一个标题"}],["content",{"$t":"第二个标题"}], .....

JSON数据格式可以像访问JS对象一样去访问,例如jsonCallback.feed[0].content.$t返回的值就是"第一个标题","[]"符号表示数组对象,访问第二个"[]"即为jsonCallback.feed[1]。

jQuery有一个getJSON()的方法可以直接访问JSON数据。prototype貌似米有。

No comments:

Post a Comment