2010-11-30 99 views
1

我有一个web服务在jsonp服务,但由于我是新手,我有检索数据的困难。这是我的代码:帮助Jsonp和jQuery

$(document).ready(function(){    
    $.getJSON("http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=myData", 
     function myData(result){ 
      $('#status').append(result.name.text); 
     } 
    ); 

}); 

div #status返回空。

你能帮忙吗?

在此先感谢

莫罗

更新:现在的作品!布特这不是当我试图循环虽然数据:

$.getJSON("http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=?", 
     function (result){ 
       $.each(result.items, function(item){ 
       $('#status').append(item.response.lines[0].name); 
     }); 
    } 
); 

我做错了什么?

感谢

+0

您是否验证过jsonp对象是否正确返回?一个有用的工具称为Fiddler。 – 2010-11-30 16:31:47

+0

@Aaron是的,认为它的确如此。亲自尝试一下:http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=myData – Mauro74 2010-11-30 16:34:24

回答

2

jQuery API

如果URL中包含字符串 “回调=?” (或类似的,由服务器端API定义),请求将被视为JSONP。

我觉得你的代码应该是这个样子

诀窍就是URL的json=?一部分。我认为jQuery会立即创建一个函数来解析de JSONp数据并将结果提供给您的回调函数。

原谅我的英文:)

更新:访问必须遍历result.response.lines回调函数

$.each(result.response.lines, function() { 
    $('#status').append(this.name); 
} 
2

这是URL的输出中的数据:

myData({"response":{"lines":[{"name":"Central"},{"name":"Victoria"}]}}); 

您可以重新格式化对象以使其更清晰:

{ 
    "response": { 
     "lines": [ 
      {"name":"Central"}, 
      {"name":"Victoria"} 
     ] 
    } 
} 

我看不到属性text。你大概的意思:

$('#status').append(result.response.lines[0].name); 

更新:这种解决方案并不能完全解决问题。正如接受的答案中所建议的那样,您需要指示jQuery生成一个随机函数名称(您不能提供自己的函数,至少不能使用getJSON)。