首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JSONP与AJAX结合使用

将JSONP与AJAX结合使用
EN

Stack Overflow用户
提问于 2011-07-27 21:43:38
回答 2查看 358关注 0票数 0

我有一个页面,我在其中使用维基百科api。但是,由于不能使用JSON进行跨域限制,所以我使用JSONP。现在,我可以使用api,如果我查询如下

代码语言:javascript
运行
复制
<script type="text/javascript">
function res(data){
  alert(data);
};
</script>
<script type="text/javascript" src="http://en.wikipedia.org/w/api.php?action=opensearch&search=api&callback=res&limit=10&namespace=0&format=json">
</script>

但是我想用AJAX来使用它。我该怎么做?有些人建议我使用jQuery,但有人能解释我如何使用普通的javascript吗?

在某种程度上可以用异步XHR调用来使用JSONP吗?

创建然后删除脚本元素是我想要避免的事情。

EN

回答 2

Stack Overflow用户

发布于 2011-07-27 21:49:46

JSONP调用本质上不是异步的,因为它们使用script标记。YOu可以推迟它们的执行,方法是以后以编程的方式附加这些标记,如下所示:

代码语言:javascript
运行
复制
sendJsonpRequest = function (url, callback) {
    if (!(url && callback)) { return; }

    // create script element
    var script = document.createElement("script"),
        jsonpCallback = "jsonp_" + new Date(),
        done = false;

    url = url.replace(/\&$/, "") + "&callback=" + jsonpCallback;

    window[jsonpCallback] = function (args) {
        callback(args);

        // Garbage collect
        window[jsonpCallback] = undefined;
        try { delete window[jsonpCallback]; } catch (e) { }
        if (head) { head.removeChild(script); }
    };

    script.src = url;
    head.appendChild(script);
};
票数 3
EN

Stack Overflow用户

发布于 2011-08-19 06:23:45

普通Javascript JSONP库:http://blog.eood.cn/jsonp-library-in-plain-javascript-with-timeout

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6851598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档