使用异步Javascript调用接收数据

问题描述 投票:0回答:2

我希望使用JavaScript从Web服务端点(例如“ http://www.example.com”)请求数据。

检索后,将有一个回调函数来处理响应(将是一个JSON对象)

我该如何写呢?框架代码即可。

会是这样的:

<script>

function callback(data)
{
    // the response text would be processed here.
}
       url="http://www.example.com";
       var script = document.createElement('script');
       script.src = url;
       script.onload=callback;
       document.body.appendChild(script);        
</script>

提前感谢。

javascript http callback dom-events
2个回答
1
投票

如上述评论中的@JuicyScripter所指出的...

“ Wikipedia使用的Wikimedia 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);     

当脚本到达并运行时,它将调用您的函数并向其传递所请求的数据。


1
投票

您应在此处查看示例:http://api.jquery.com/jQuery.getJSON/

© www.soinside.com 2019 - 2024. All rights reserved.