尝试使用jQuery来显示JSON文本数据
我知道很少(没有)JavaScript,或者很多关于使用API的知识。 但是,我想通过qype.com API在我的网站上显示一些酒店评论。 然而,我正在努力管理这个。
这是我到目前为止的代码:
$(document).ready( function() { $.getJSON( "http://api.yelp.com/business_review_search?term=hilton%20metropole&location=B26%203QJ&ywsid=APIKEY Removed", function(data) { $.each( data.businesses, function(i,businesses) { content = '' + businesses.reviews.text_excerpt + '
'; content = '' + businesses.reviews.date + '
'; $(content).appendTo("#review"); } ); } ); } );
我在身体中有一个名为review的div,我想显示文本。
任何建议都很受欢迎。
可以在http://api.yelp.com/business_review_search?term=hilton%20metropole&location=B26%203QJ&ywsid=lOoGGbkYpVmTvxHlWGT2Lw找到JSON。
此外,我在同一页面上有多个业务,如何在同一页面上多次使用这些业务,但是在不同的位置输出数据?
更新:啊,我现在看到你的错误。 businesses.reviews
是一个数组(每个企业可以有多个审核),因此您必须遍历每个企业和每个企业的评论。
我不得不改变一些东西让它在我的测试床上运行,但你可以在这里看到这个代码的示例: http : //bit.ly/4mTxPp
yelp目前支持JSONP调用,因此您可以将代码更改为:
您是否在使用此代码时出现Firebug错误? 究竟发生了什么?
我希望这个问题是由于您尝试执行不允许的跨域请求而引起的。 通常,您希望在后端进行此类数据收集,但您可以使用JSONP等替代方法来执行相同操作。
看看关于这些东西的jQuery 文档 ,应该清楚发生了什么。
另外,作为旁注:在你的回调中你有content =
哪个好但不理想。 分配给这样的content
将在全局范围内创建一个您不想要的变量。 在这种情况下,它可能不会引起问题但是说你有两个这样的请求同时进行,第二个任务可以轻松地踩到第一个导致难以调试的怪异。 最好总是用var
创建变量。
如果data.businesses
是一个数组,我会假设data.businesses[x].reviews
也是一个数组。 此代码循环业务以及每个业务的评论。 它还通过直接附加到#review
div来消除content
变量。
$.each(data.businesses, function(i,business){ $.each(business.reveiws, function(r,review){ $("#review").append( '' + review.text_excerpt + '
' ).append( '' + review.date + '
' ); }); });
我想你可以通过添加“callback =?”来指定你的$.getJSON
方法的JSONP。 到url参数。
从jQuery 1.2开始,如果指定了JSONP回调,则可以加载位于另一个域的JSON数据,这可以这样做:“myurl?callback =?”
$.getJSON("http://api.yelp.com/business_review_search?term=hilton%20metropole&location=B26%203QJ&ywsid=APIKEY Removed&callback=?", function(data){ ... });
问题是您正在进行跨域请求,出于安全目的不允许这样做。 您必须在您的域上创建代理脚本(例如在php中)并从中调用yelp或在服务器端完全获取数据。
我假设您必须体验部分数据(您应该看到的)消失。 我认为你必须编辑你的代码:
content = '' + businesses.reviews.text_excerpt + '
'; content += '' + businesses.reviews.date + '
';
希望这可以帮助…