尝试使用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 + '

';

希望这可以帮助…