eja*_*ang 3 javascript text jsonp file 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>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,json没有加载.但是,当我将网址设为" http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=myCallback " 时,json会正确加载.我从这里得到了这个例子
任何人都可以解释为什么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>
Run Code Online (Sandbox Code Playgroud)
返回[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,然后用close paren附加它.
即
myCallback( {"your":"json"} );
Run Code Online (Sandbox Code Playgroud)