いくつかの統計を追跡するために Topsy を使用しようとしています。$.getJSON を使用して API から必要なものを取得する、ローカルで動作するスクリプトがありました。
今、私は展開後に問題に遭遇しました。オリジンが許可されていません。JSONPを解釈させるために知っていることはすべて試しました
ローカルで動作するコード
get_total = (trend, duration, callback) ->
requests = []
search_words = []
if trend.total?
callback(trend, trend.total)
else
for item in trend.search_terms
search_words.push(item.term)
keywords = search_words.join('+OR+')
url = "http://otter.topsy.com/search.json?callback=test&q=#{keywords}&window=#{duration}&apikey=38A260E9D12A4908B1AF9184B691131"
requests.push($.getJSON(url, (data) ->
trend.total = data.response.total
))
$.when.apply($, requests).then ->
callback(trend, trend.total)
パラメータを削除して&callback追加する?と、解析エラーが発生し、json はスクリプトではなく MIME タイプ json で送信されます。
Topsy API によると、コールバックを追加するだけで、json の代わりにスクリプトを提供できます。
Topsy JSONP リファレンス
Javascript (JSONP)
API 要求が Javascript 応答形式を使用する場合、応答本文は、応答オブジェクトを含む 1 つのパラメーターを受け取る JavaScript 関数呼び出しになります。HTTP ヘッダー Content-Type: application/javascript` も送信されます。
+-------------------------------------------------------------------------+
| Name | Type | Description |
+-------------+----------+------------------------------------------------+
| callback | string | Javascript callback function name. (required) |
+-------------------------------------------------------------------------+