奇怪的xDomain与$ .getJSON有关

时间:2011-08-26 15:00:47

标签: jquery cross-domain topsy

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

  

Javascript(JSONP)

     

当API请求使用Javascript响应格式时,响应正文将是一个javascript函数调用,它接受一个包含响应对象的参数。还将发送HTTP标头内容类型:application / javascript`。

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

1 个答案:

答案 0 :(得分:1)

试试这个网址:

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

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