我在jsonp中提供了一个Web服务,但由于我是新手,因此我很难检索数据。这是我的代码:
$(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 :(得分:2)
来自jQuery API:
如果网址包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。
我认为您的代码看起来应该是这样的
$.getJSON("http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=?", function (result){
$('#status').append(result.name.text);
});
技巧是URL的json=?
部分。我认为jQuery动态创建一个函数来解析de JSONp数据并将结果提供给你的回调函数。
原谅我的英文:)
更新:访问您必须在回调函数内result.response.lines
进行迭代的数据
$.each(result.response.lines, function() {
$('#status').append(this.name);
}
答案 1 :(得分:2)
这是网址的输出:
myData({"response":{"lines":[{"name":"Central"},{"name":"Victoria"}]}});
您可以重新格式化对象以使其更清晰:
{
"response": {
"lines": [
{"name":"Central"},
{"name":"Victoria"}
]
}
}
我看不到名为text
的属性。你可能意味着:
$('#status').append(result.response.lines[0].name);
更新:此解决方案无法完全解决问题。正如在接受的答案中所建议的那样,您需要指示jQuery生成随机函数名称(您不能提供自己的函数名称,至少不能使用getJSON)。