日期:2014-05-16  浏览次数:20751 次

【求助】如果通过ajax获取豆瓣API的JSON
RT
我想通过AJAX获取豆瓣API的json data。
JS代码如下:

JScript code
function testAjax() {
           $.ajax({
                url: "http://api.douban.com/book/subject/1220562?alt=json",
                type: "GET",
                dataType: "json",
                success: function (data) {
                   $("#name").html(data.category.title.$t);
                   $("#age").html(data.category.author.name.$t);
                   $("#content").html(data.category.content.$t);
                }

                })
        }


但是报错了,error msg是:
XMLHttpRequest cannot load http://api.douban.com/book/subject/1220562?alt=json. Origin http://localhost:51011 is not allowed by Access-Control-Allow-Origin.

请问各位大师,我在哪一步错了???

我上网查了一下,有一种叫jsonp的跨域调用json的做法。 
改进了一下写法后,变成下面: 
JScript code
function testAjax() { 
$.ajax({ 
url: "http://api.douban.com/book/subject/1220562?alt=json", 
type: "GET", 
dataType: "json", 
success: function (data) { 
$("#name").html(data.category.title.$t); 
$("#age").html(data.category.author.name.$t); 
$("#content").html(data.category.content.$t); 
} 

}) 
} 

但是虽然这样能够取到data了,但好像在取到data后要编译一次, 
因为取到的data中有些肯定编译不过,于是又悲剧了。 
可能还是我的写法有问题吧,肯定各位大师指正!!!!!!!!!!

------解决方案--------------------
LZ已经在javaeye
http://www.iteye.com/problems/86113
回复你了..
不知道这样是不是符合你的要求.

------解决方案--------------------
1跨域了,需要做代理

2,jsonp也需要动态页处理你发送的参数你才能获取到,不知道你说的编译指什么。jQuery jsonp跨域原理