我有这个代码,并且还使用$ .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 + "
"); }); }, 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
好吧,我找到了答案......看起来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响应的任何人都应该明确地解析JSON或者在将eval()带到它之前验证JSON.看这里:
http://www.JSON.org/js.html
从页面链接是建议的ECMAScript JSON解析器接口JSON.parse()的一个很好的参考实现.
干杯,云母