2011-09-28 101 views
0

我一直在搜索arround,我无法从这个例子中检索JSON信息。有人可以帮我吗?JSON调用失败,JQuery

var jsonURL = "http://mdc2.cbuc.cat/dmwebservices/index.php?q=dmGetCollectionList/json";

var jqxhr = $.getJSON(jsonURL, function(data) { 
    alert("Success!"); 
    alert(data[0].alias); 
}) 
.success(function() { alert("second success"); }) 
.error(function() { alert("error"); }) 
.complete(function() { alert("complete"); }); 

jqxhr.complete(function(){ alert("second complete"); }); 

我检查的网址,到处它说是有效的,以及格式化......

+2

只有当它是JSONP时,才能从其他域中检索JSON。 –

回答

1

由于该请求没有返回正确的jsonp,浏览器无法解释它。

如果访问该服务器,就需要进行修改,以接受一个回调函数,如?callback=cbfunc这将然后包装在一个回调函数的JSON响应,如cbfunc(["foo","bar"]);

如果没有访问该服务器,您可以使用第三方解决方案(如YQL),也可以构建一个服务器端代理来向您提出请求。对于YQL,这里有一个页面,它可以帮助:

http://developer.yahoo.com/yql/console/#h=SELECT%20*%20FROM%20json%20WHERE%20url%3D%22http%3A//mdc2.cbuc.cat/dmwebservices/index.php%3Fq%3DdmGetCollectionList/json%22

选择JSON单选按钮,然后你会发现一个网址的页面的底部。只是删除callback=cbfunc部分。

这是已生成的网址:

http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20json%20WHERE%20url%3D%22http%3A%2F%2Fmdc2.cbuc.cat%2Fdmwebservices%2Findex.php%3Fq%3DdmGetCollectionList%2Fjson%22&format=json&callback=cbfunc 

如果请求包含任何敏感数据,我建议对YQL和使用的服务器端脚本来获取数据。

+0

那么......第一个答案是我无法回顾JSON的原因,你的问题是我怎么能超越这个问题,对吧?谢谢你们两位! – user969228