跨站点Ajax JSON调用

时间:2012-10-14 20:06:45

标签: jquery ajax json jsonp cross-site

我在处理一个我想要搜索功能的网站时遇到了很大麻烦。这是一个在线游戏的排名,但搜索选项对我的联盟来说还不够。 因此,我想进行ajax调用以获取所需的信息,但根据我的尝试,有几个问题:

  • 如果我尝试将ajax调用作为JSONP调用,那么我的firebug中会出现“无效标签”错误。我已经知道发生此错误是因为检索到的数据未包含在函数调用中。从来没有看到背后的JSON数据,为什么它离我这么遥远?
  • 如果我尝试使用jQuery进行简单的getJSON调用,我会收到几个错误,因为跨站点脚本会导致问题。 JSON数据在另一台服务器上,因此这是一个很大的问题......

我个人能够直接打开网站(如www.onlinegamesite.com/api/?foo=foo&boo=false),如果我能在浏览器中打开它,为什么我无法让它以编程方式工作?

我希望你有想法如何处理它,在WWW中有太多关于它的线索,经过一天的发现和一次又一次的尝试,我终于希望在这里得到帮助。

编辑:我目前的代码是这样的:(试图为JSONP)

$(document).ready(function() {
var data = $.ajax({
    url: "http://lastchaos.gamigo.com/de/ranking/api/?tabNam=realm_4&CurrLang=de&CurrCategorie=user&sEcho=1&iColumns=6&sColumns=&iDisplayStart=0&iDisplayLength=1025&sSearch=&bRegex=false&sSearch_0=&bRegex_0=false&bSearchable_0=true&sSearch_1=&bRegex_1=false&bSearchable_1=true&sSearch_2=&bRegex_2=false&bSearchable_2=true&sSearch_3=&bRegex_3=false&bSearchable_3=true&sSearch_4=&bRegex_4=false&bSearchable_4=true&sSearch_5=&bRegex_5=false&bSearchable_5=true&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true",
    dataType: "jsonp"
    });
});

我之前的最后一次尝试是一些简单的JSON调用,但我无法正确调试它(无法在IE没有正确的调试工具时停止FF过滤XSS):

$(document).ready(function() {
var data = $.getJSON({
    url: "http://lastchaos.gamigo.com/de/ranking/api/?tabNam=realm_4&CurrLang=de&CurrCategorie=user&sEcho=1&iColumns=6&sColumns=&iDisplayStart=0&iDisplayLength=1025&sSearch=&bRegex=false&sSearch_0=&bRegex_0=false&bSearchable_0=true&sSearch_1=&bRegex_1=false&bSearchable_1=true&sSearch_2=&bRegex_2=false&bSearchable_2=true&sSearch_3=&bRegex_3=false&bSearchable_3=true&sSearch_4=&bRegex_4=false&bSearchable_4=true&sSearch_5=&bRegex_5=false&bSearchable_5=true&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true",
    type: "json"
    });
});

1 个答案:

答案 0 :(得分:2)

您可以使用此选项

执行此操作
  1. 拨打php页面
  2. 向其他网站提出卷曲请求
  3. 抓住卷曲输出数据
  4. 将输出数据返回给ajax
  5. 在代码中使用该输出数据