Извлечение JSON из удаленного домена, jQuery - PullRequest
2 голосов
/ 09 февраля 2012

Я пытаюсь получить данные в формате JSON из удаленного домена (API кодирования видео Zencoder) в сценарии jQuery.Когда скрипт запускается, он возвращает код 200, но Firebug показывает ошибку (жирным красным выделением, кружком с X) на адресе, и ответ пустой.

Вот скрипт jQuery, относящийся к этому:

var checkStatus = function(jobID) {
        var url = 'https://app.zencoder.com/api/v2/jobs/' + jobID + '/progress.json?api_key=asdad3332d';
        $.getJSON(url, function(data) {
            if (data.state == 'processing') {
                    //Do things to indicate job is still going
                    //Repeat this function to check status again
                    setTimeout(function() {
                        checkStatus(jobID);
                    }, 6000);
                } else if (data.state == 'finished') {
                    //Do some stuff
                } else if (data.state == 'failed') {
                    //Show errors, do other stuff
                }
            });
     };

А вот пример возвращаемого JSON.

{"outputs":[{"id":18492554,"state":"finished"},{"id":18492553,"state":"finished"},{"id":18492555,"state":"finished"}],"input":{"id":12437680,"state":"finished"},"state":"finished"}

Наконец, вот заголовки ответа, возвращаемые Firebug:

Response Headers
Cache-Control   private, max-age=0, must-revalidate
Connection  close
Content-Length  174
Content-Type    application/json; charset=utf-8
Date    Thu, 09 Feb 2012 16:06:13 GMT
Etag    "48f2d50a838e0e1e433f7c0ba197e787"
Server  ZenServer 0.1.0
X-Zencoder-Rate-Remaining   4999

Любая помощь будет оценена здесь.Почесывая голову на этом

ДОКУМЕНТАЦИЯ Вот документация API, касающаяся получения прогресса работы, что я и пытаюсь сделать .. https://app.zencoder.com/docs/api/jobs/progress

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Вам потребуется использовать jsonp для междоменных запросов, и сервер должен будет иметь возможность принимать запросы jsonp и отвечать соответствующим образом.

$.ajax({
    url: 'https://app.zencoder.com/api/v2/jobs/1234/progress.js?api_key=asdf1234',
    dataType: 'jsonp',
    success: function(data){// your code here
    }
});

jQuery автоматически добавит параметр callback=blah,Смотрите здесь раздел dataType: http://api.jquery.com/jQuery.ajax/

Параметр data в функции успеха будет содержать объект (не просто строку JSON, а объект, представленный строкой JSON).

0 голосов
/ 09 февраля 2012

Можете ли вы добавить callback=? к URL-запросу? Это должно работать, если сервер поддерживает JSONP.

...