一尘不染

使用jQuery获取JSON数据返回无效标签错误

json

我有这段代码,并且还尝试过使用$ .getJson函数进行类似的操作:

jQuery(document).ready(function(){
    var kiva_url = "http://api.kivaws.org/v1/loans/newest.json";

    jQuery.ajax({
        type: "GET",
        url: kiva_url,
            data:"format=json", 
        success: function(data){
            alert("here");
            jQuery.each(data.loans, function(i, loan){
                jQuery("#inner_div").append(loan.name + "<br />");
            });
        },
        dataType: "jsonp",
        error: function(){
            alert("error");
        }
    });

});

当我查看Firebug时,它返回“无效标签”错误。我搜索了一些人提到的使用解析器解析结果的信息。我可以在Firebug中看到结果。有人可以指出我应该做什么的例子吗?

Firebug错误:

无效标签
http://api.kivaws.org/v1/loans/newest.json?callback=jsonp1249440194660&_=1249440194924&format=json&
第1行

可以在以下位置找到json的示例输出:http :
//build.kiva.org/docs/data/loans


阅读 174

收藏
2020-07-27

共1个答案

一尘不染

好吧,我找到了答案……看起来kiva不支持jsonp,这是jquery在这里做的-

http://groups.google.com/group/build-
kiva/browse_thread/thread/9e9f9d5df821ff8c

…我们没有计划支持JSONP。支持此方法会提倡不良的安全实践,并且已经存在一些从JavaScript访问数据的好的方法,可以保护您的应用程序和用户。这是一篇很棒的文章:

http://yuiblog.com/blog/2007/04/10/json-and-browser-
security/

虽然由于我们仅处理公共数据,所以现在对Kiva贷方的风险很小,但允许通过脚本标签导入私人贷方数据的风险却越来越大。我们认为,风险(以及创建安全应用程序所增加的复杂性)对开发人员而言并不值得。

为所需的提要编写服务器端代理是访问基于浏览器的应用程序中数据的最常见解决方案。使用iFrame还可以使用其他技巧。最好的希望是新型的基于客户端的技术/标准,它们将使基于浏览器的JavaScript安全地访问跨域资源(
http://dev.w3.org/2006/waf/access-control/
http://
json.org/JSONRequest.html)。某些工具(例如BrowserPlus和Gears)可让您立即使用这些工具,但是一段时间后您将无法依赖它们。

最后一点,我要指出的是,在JavaScript中使用JSON响应的任何人都应在将eval()应用于它之前,显式解析JSON或验证JSON。看这里:

http://www.JSON.org/js.html

该页面的链接是建议的ECMAScript JSON解析器接口JSON.parse()的很好的参考实现。

欢呼声

2020-07-27