繁体   English   中英

JSONP帮助(没有jQuery)

[英]JSONP Help (No jQuery)

我在这里努力想弄清楚如何做一个JSONP请求,但我寻找参考资料的地方都是jQuery的例子。 我可以阅读jQuery源代码,但我想要一个简洁明了的例子。 我正在为某些东西构建一个库,我不想包含jQuery,所以请不要使用jQuery $.getJSON 我知道如何使用它。

我的服务器使用content-type: application/json; charset=utf-8吐出正常的callback({"foo":"bar"})响应content-type: application/json; charset=utf-8 content-type: application/json; charset=utf-8 MIME。

因此,如果我放入一个脚本标签(使用Twitter,因为我知道他们的API工作):

<script src="http://twitter.com/users/oscargodson.json?callback=test"></script>

或动态。 要么工作,我得到JSON,这是我无法弄清楚的下一步。

如果我在脚本加载后只执行console.log(test) ,我得到: Uncaught ReferenceError: test is not defined

为什么? 在我从服务器得到响应后,我是如何将它传递给自己的? 在我自己的服务器上如果我做callback = {"foo":"bar"}回调工作并返回一个对象,但不是上面的方式。 怎么会? 我只使用AJAX库来做到这一点,但对于这个项目,我需要自己编写代码:)

如果你设置“callback = test”,那么在你的客户端代码中你需要有一个名为“test”的函数,它从服务器获取json值并为你处理它。

JQuery就是这样做的,它具有动态生成的函数名称。

function test(data) { console.log(data) }
get_jsonp("http://www.example.com/?callback=test")

一个简单的脚本包含应该做的工作:

function test(res) {
    // TODO: manipulate the results here like for example showing
    // the created_at property
    alert(res.created_at);    
}

window.onload = function() {
    var script = document.createElement("script");
    script.src = 'http://twitter.com/users/oscargodson.json?callback=test';
    document.body.appendChild(script);
};

这是一个现场演示

显然你不应该忘记浏览器可能会缓存静态资源,比如脚本,所以如果你想确保新的信息,你可以调整一些时间戳到网址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM