gpt4 book ai didi

javascript - 保管箱 jsonp 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:37:22 26 4
gpt4 key购买 nike

我正在尝试使用纯 javascript/html 从跨域下载一些数据,具体来说是 dropbox。

<html>
<head>
</head>
<body>
<div id = 'twitterFeed'></div>
<script>
function myCallback(dataWeGotViaJsonp){
var text = '';
var len = dataWeGotViaJsonp.length;
for(var i=0;i<len;i++){
twitterEntry = dataWeGotViaJsonp[i];
text += '<p><img src = "' + twitterEntry.user.profile_image_url_https +'"/>' + twitterEntry['text'] + '</p>'
}
document.getElementById('twitterFeed').innerHTML = text;
}
</script>
<script type="text/javascript" src="http://dl.dropbox.com/u/6438697/padraicb.json?count=10&callback=myCallback"></script>
</body>

出于某种原因,json 未加载。但是,当我改用 url“http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=myCallback”时,json 会正确加载。我从 here 得到这个例子

有人可以解释为什么 dropbox 不起作用吗?

谢谢!

更新:

<script type=text/javascript>
function myCallback(dataWeGotViaJsonp){
alert(dataWeGotViaJsonp);
}
</script>
<script type="text/javascript" src="http://dl.dropbox.com/u/6438697/test2?&callback=myCallback"></script>

返回 [object object] 或 undefined... 还是有问题? test.json 的内容是 myCallback( {"your":"json"} );

最佳答案

您不能只将“回调”一词添加到您的 URL 并期望 Dropbox 将其包装为 JSONP。您将 JSON 文件放在 Dropbox 上并公开共享,但 Dropbox 不是动态服务器。您需要一个可编写脚本的环境来获取回调参数值并将其包装在 JSON 周围以使其成为“JSONP”。

Twitter URL 起作用的原因是他们的 API 配置为将回调参数作为客户端期望 JSONP 的标志,这实际上只是“包装在回调函数中的 JavaScript 对象文字”的奇特术语。您告诉 Twitter 该函数将被调用什么,他们将返回一个文件,浏览器将作为脚本执行该文件,并将该对象作为参数传递给您的回调函数。

如果您不需要动态的 JSONP 回调函数名称并且您需要使用 Dropbox,只需自己包装 JSON。您需要做的就是编辑文件,在有效的 JSON 前面加上函数名称,并在其后附加右括号。

即,

myCallback(  {"your":"json"}  );

关于javascript - 保管箱 jsonp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com