0

いくつかの統計を追跡するために 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) |
+-------------------------------------------------------------------------+
4

1 に答える 1

1

このURLを試してください:

http://otter.topsy.com/search.js?callback=test&q=test&apikey=38A260E9D12A4908B1AF9184B691131

注:search.jsonからsearch.jsに変更しました

于 2011-08-26T15:16:52.283 に答える