javascript - 保管箱 jsonp 文件

标签 javascript file text jsonp dropbox

我正在尝试使用纯 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/

相关文章:

javascript - 来自同一域的 iframe 和跨浏览器脚本

javascript - Bootstrap 3.3.5。折叠的菜单不会展开

c++ - Qt4 : write QByteArray to file with filename?

c - 同时写入和读取文件

java - 带有粗体/斜体信息的 PDFBox 文本提取不适用于某些文件

javascript - 在表单提交时,它显示 - 此网页有一个重定向循环

java - 谁能解释一下如何用java读取文件。 -1是什么意思?我想读取的文件中没有任何数字..困惑 :(

c++ - 无法从文件中删除行,使用 stringstream 作为替代?

python - 某些字符的正则表达式冲突 (ISO-8859-1 Windows-1252)

javascript - QuickConnect 与 Phonegap