2012-02-09 92 views
2

jQueryスクリプトでリモートドメイン(ZencoderビデオエンコーディングAPI)からJSON形式のデータを取得しようとしています。スクリプトが実行されると、コード200が返されますが、Firebugはアドレスにエラー(太字の赤色のハイライト、Xの付いた円)を表示し、応答は空です。ここでリモートドメインからJSONを取得する、jQuery

は、これに関連する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 

すべてのヘルプはここにいただければ幸いです。ここでは、この1

ドキュメンテーション に頭を掻くことは、私が何をしようとしています何であるジョブの進捗状況を取得を参照するAPIドキュメントは、あなたがのためにJSONP使用する必要があります https://app.zencoder.com/docs/api/jobs/progress

+0

外部ドメインに対してAjaxリクエストを行うことはできません。同じオリジンポリシーに違反しています。 –

答えて

1

..ですドメイン間の要求があり、サーバーは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パラメータを追加します。 ここでは、ここでデータ型を参照してください:成功関数のhttp://api.jquery.com/jQuery.ajax/

data PARMは、オブジェクト(だけでなく、JSON文字列が、JSON文字列で表されるオブジェクト)が含まれています。

+0

APIドキュメントでは、JSONPについて言及していますが、 'https://app.zencoder.com/api/v2/jobs/1234/progress.js?api_key = asdf1234&callback = asdf'というURL形式を使用する必要があります。コールバックはオプションです。私は代わりにこのURLを試して、同じ結果を持っていた - コード200、エラー表示、無応答。コードやURLだけを変更する必要がありますか(本質的に '.json'ではなく' .js')ですか? – NightMICU

+0

'callback = asdf'は、彼らがjsonpリクエストを受け入れることを意味します。私の答えに書式を使うだけで、jQueryがそれを処理します。 –

+0

私は助けることができてうれしい。 –

0

URLクエリにcallback=?を追加できますか?サーバーがJSONPをサポートしていると仮定すると、これはうまくいくはずです。

関連する問題