我正在尝试使用 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) |
+-------------------------------------------------------------------------+