如何使用AJAX接收JSON文件并使用javascript解析它?

我正在尝试解析foursquare给我的这个非常复杂的JSON。 这是我的AJAX请求:

$.ajax({ url: 'https://api.foursquare.com/v2/venues/explore', dataType: 'json', data: 'limit=7&ll='+latitude+','+longitude+'&client_id='+client_id+'&client_secret='+client_secret+'', async: false, success: getVenues(data) }); 

getVenues是我正在制作的一个函数,用于对JSON进行排序并在页面上显示相关内容。 我遇到的第一个问题是我不知道如何告诉成功函数它应该处理从服务器接收的数据 – 这些数据是存储在某个变量的某个地方吗? 我现在正在做getVenues(数据),但它告诉我’数据’不是一个已定义的变量。 然而,许多在线教程似乎对仅对这个神秘的“数据”执行function感到高兴,而他们似乎也有效。

接下来,我在解析JSON本身时遇到了问题。 这是我想要处理的JSON的简化版本: http : //pastie.org/4382619 。 如何选择场地名称和ID等,并在页面上显示?

谢谢

你应该做:

 $.ajax({ // some other code success: getVenues }); 

你告诉ajax:“使用getVenues函数”,而不是“使用getVenus(数据)值”。 至于第二个问题:

 var l = data.response.groups.length; for (var i = 0; i < l; i++) { var group = data.response.groups[i]; var k = group.items.length; for (var j = 0; j < k; j++) { var venue = group.items[j].venue; // use venue as you wish } } 

您在线看到的教程可能会将success回调声明为匿名函数。 在这些情况下, data没有传递给函数,它被声明为该函数的参数。 jQuery非常适合处理从AJAX调用到成功函数的响应作为第一个参数,无论你选择命名它( data最有意义)。

另外,如果在$.ajax()调用中指定dataType: 'json' ,jQuery将在将JSON响应传递给该函数之前对其进行解析,确保它是有效的JSON并且您有一个对象可以在函数内部使用。 如果响应无效JSON,则不会执行success回调,而是执行error回调(如果已指定)。

在您的情况下,您正在传递函数引用,因此假设您的getVenues函数如下所示:

 function getVenues(data) { // do something } 

然后你可以简单地做:

 success: getVenues 

在您传递给$.ajax()的对象中。

ajax调用中对象的success属性只需要函数名或函数对象。 你要么只给它名字,就像那样:

  $.ajax({ url: 'https://api.foursquare.com/v2/venues/explore', dataType: 'json', data: 'limit=7&ll='+latitude+','+longitude+'&client_id='+client_id+'&client_secret='+client_secret+'', async: false, success: getVenues }); 

或者你这样做:

  $.ajax({ url: 'https://api.foursquare.com/v2/venues/explore', dataType: 'json', data: 'limit=7&ll='+latitude+','+longitude+'&client_id='+client_id+'&client_secret='+client_secret+'', async: false, success: function(data) { getVenues(data) } });