Jonp файл Dropbox - PullRequest
       9

Jonp файл Dropbox

3 голосов
/ 06 августа 2011

Я пытаюсь загрузить некоторые данные, используя чистый 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 не загружается,однако json загружается правильно, когда я вместо этого создаю URL "http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=myCallback". Я получил этот пример от здесь

Кто-нибудь может объяснить, почему 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>

возвращает либо [объектный объект], либо неопределенное ... что-то по-прежнему не так? Содержимое test.json равно myCallback ({"ваш":" json "});

Ответы [ 2 ]

6 голосов
/ 06 августа 2011

Вы не можете просто добавить слово «обратный вызов» в свой URL и ожидать, что Dropbox обернет его для JSONP. Вы помещаете файл JSON в свой Dropbox и делитесь им публично, но Dropbox не является динамическим сервером. Вам нужна среда сценариев, чтобы взять значение параметра обратного вызова и обернуть его вокруг JSON, чтобы сделать его "JSONP".

Причина, по которой URL-адрес Twitter работает, заключается в том, что его API настроен на прием параметра обратного вызова в качестве признака того, что клиент ожидает JSONP, что на самом деле является просто причудливым термином «литерал объекта JavaScript, заключенный в функцию обратного вызова». Вы сообщаете твиттеру, как будет вызываться эта функция, и они будут возвращать файл, который браузер будет выполнять как скрипт, передавая объект в качестве параметра функции обратного вызова.

Если вам не нужно, чтобы имя функции обратного вызова JSONP было динамичным, и вам нужно использовать Dropbox, просто оберните JSON самостоятельно. Все, что вам нужно сделать, это отредактировать файл, добавить к действительному JSON имя функции и добавить его к закрывающей скобке.

е

myCallback(  {"your":"json"}  );
1 голос
/ 29 октября 2012

Можно использовать Google Apps Script в качестве прокси для хостинга сайтов, которые не поддерживают jsonp. Здесь написано, как это сделать http://ramblings.mcpher.com/Home/excelquirks/jsonp

...