从远程域jQuery中检索JSON

时间:2012-02-09 16:13:05

标签: jquery json getjson

我试图在jQuery脚本中从远程域(Zencoder视频编码API)检索JSON格式的数据。当脚本运行时,它返回代码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 个答案:

答案 0 :(得分:1)

您需要使用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 parm。 请在此处查看dataType部分:http://api.jquery.com/jQuery.ajax/

success函数中的data parm将包含对象(不仅是JSON字符串,而是JSON字符串表示的对象)。

答案 1 :(得分:0)

您可以将callback=?附加到网址查询吗?这应该有效,假设服务器支持JSONP。