我希望使用javascript从网络服务端点(例如“http://www.hello.com”)请求数据。
检索后,会有一个回调函数来处理响应(它将是一个JSON对象)
我该怎么写呢?骨架代码可以。
会是这样的:
<script>
function callback(data)
{
// the response text would be processed here.
}
url="http://www.endpoint.com";
var script = document.createElement('script');
script.src = url;
script.onload=callback;
document.body.appendChild(script);
</script>
提前致谢。
答案 0 :(得分:1)
您应该查看以下示例:http://api.jquery.com/jQuery.getJSON/
这将为您提供入门所需的一切以及更多内容,以下示例来自链接:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
{
tags: "cat",
tagmode: "any",
format: "json"
},
function(data) {
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
此处jSON get请求在url中发送3个参数:tags
,tagmode
和format
作为GET请求(与http://mysite.com?name=me&mood=happy相同)。
function(data)
正在处理请求的结果
阅读链接,了解更多深入细节和示例。
答案 1 :(得分:1)
正如@JuicyScripter在上述评论中所指出的那样......
“Wikipedia使用的维基媒体API支持JSONP回调参数。”
这意味着您可以向查询添加回调...
var url = "http://en.wikipedia.org/w/api.php?action=query&prop=info|revisions&intoken=edit&titles=Main%20Page&format=json&callback=my_callback";
最后请注意我添加了&callback=my_callback
。会发生什么,而不是像...那样发送JSON响应。
{
query: {
pages: {
15580374: {
...
}
}
}
}
...它现在将被包装在一个函数调用中。这将是有效的JavaScript,因此您的script
请求将执行该函数,并传递数据。
my_callback({
query: {
pages: {
15580374: {
...
}
}
}
});
所以你需要的是一个回调函数,它与你在查询中给出的函数同名......
function my_callback( data ) {
console.log( data );
}
确保此功能全局可用。
然后摆脱onload
行,你的代码应该正常工作......
var url = "http://en.wikipedia.org/w/api.php?action=query&prop=info|revisions&intoken=edit&titles=Main%20Page&format=json&callback=my_callback";
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
当脚本到达并运行时,它将调用您的函数向其传递请求的数据。