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并添加 a时?,我得到解析错误,并且 json 仍然使用 MIME 类型的 json 而不是脚本发送。

根据 Topsy API 添加回调是您提供脚本而不是 json 所需的全部内容。

Topsy JSONP 参考

Javascript (JSONP)

当 API 请求使用 Javascript 响应格式时,响应主体将是一个 javascript 函数调用,它采用一个包含响应对象的参数。还将发送 HTTP 标头 Content-Type: application/javascript`。

+-------------------------------------------------------------------------+
|   Name      |  Type    |  Description                                   |
+-------------+----------+------------------------------------------------+
|   callback  |  string  |  Javascript callback function name. (required) |
+-------------------------------------------------------------------------+
4

1 回答 1

1

试试这个网址:

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

注意,我将它从 search.json 更改为 search.js

于 2011-08-26T15:16:52.283 回答