【问题标题】:JSONP request using jquery $.getJSON not working on well formed JSON使用 jquery $.getJSON 的 JSONP 请求不适用于格式良好的 JSON
【发布时间】:2011-01-26 10:32:01
【问题描述】:

我不确定现在是否可以从我正在尝试的网址中获得。请看这个网址:http://www.heiaheia.com/voimakaksikko/stats.json

它始终提供相同的填充功能“voimakaksikkoStats”。它是格式良好的 JSON,但我无法从远程服务器加载它。它需要服务器端的一些工作还是可以用javascript加载?我认为问题必须与该回调函数有关...

JQuery 不是必需的,但它会很好。

这 (callback=voimakaksikkoStats) 不返回任何内容(firebug -> net -> response),并且警报不会触发:

$.getJSON("http://www.heiaheia.com/voimakaksikko/stats.json?callback=voimakaksikkoStats", function(data){
    alert(data);
})

但是这个(回调=?):

 $.getJSON("http://www.heiaheia.com/voimakaksikko/stats.json?callback=?", function(data){
    alert(data);
})

返回:

voimakaksikkoStats({"Top5Sports":[],"Top5Tests":{"8":"No-exercise ennuste","1":"Painoindeksi","2":"Vy\u00f6t\u00e4r\u00f6n ymp\u00e4rys","10":"Cooperin testi","4":"Etunojapunnerrus"},"Top5CitiesByTests":[],"Top5CitiesByExercises":[],"ExercisesLogged":0,"Top5CitiesByUsers":[""],"TestsTaken":22,"RegisteredUsers":1});

但我无法访问它...在这两个示例中,警报都不会触发。有人可以帮忙吗?

【问题讨论】:

  • 我正在尝试使用 JSONP 从远程服务器获取此信息。服务器总是返回 voimakaksikkoStats - 而不是动态地给出回调函数。这会导致问题吗?

标签: javascript jquery json jsonp


【解决方案1】:
<script type="text/javascript">
function voimakaksikkoStats(stats) {
  var ul = new Element('ul');
  ul.insert(new Element('li').update('Registered users: '+ stats['RegisteredUsers']));
  ul.insert(new Element('li').update('Tests taken: '+ stats['TestsTaken']));
  ul.insert(new Element('li').update('Top5 sports: '+ stats['Top5Sports'].join(', ')));
  $(document.body).insert({'bottom': ul});
}
</script>
<script type="text/javascript" src="http:/www.heiaheia.com/voimakaksikko/stats.json"></script>

此示例使用 Prototype.js 使用给定统计数据中的一些数据创建列表,然后将此列表放在文档正文的底部。

【讨论】:

  • 是的,我在这之前就已经做到了——但这肯定也会对我有所帮助!
【解决方案2】:
<script type="text/javascript">
function voimakaksikkoStats(obj) {
    alert(obj.TestsTaken);
}
</script>
<script type="text/javascript" src="http://www.heiaheia.com/voimakaksikko/stats.json"></script>

我从来没有使用过 jQuery,但是上面的简单代码解决了我的问题。我从雅虎那里得到了帮助:http://developer.yahoo.com/common/json.html

【讨论】:

    【解决方案3】:

    如果您的请求转到另一个域,请尝试使用 jsonP 方法。搜索 jsonP 文档

    【讨论】:

    • 是的,这就是我们正在尝试做的事情。虽然 heiaheia erver 总是返回 voimakaksikkoStats - 而不是动态地给出回调函数。这会导致问题吗?
    【解决方案4】:

    该脚本是否也在尝试从http://www.heiaheia.com 获取 json 在http://www.heiaheia.com 上?

    如果不是这个原因,则当前无权向提供脚本的服务器以外的另一台服务器发出请求(使用 javascript)

    【讨论】:

    • 是的,远程服务器,我们正在尝试为此使用 JSONP。
    【解决方案5】:

    要让您的测试功能正常工作,请尝试更改为 callback=?

    【讨论】:

    • 啊,我的问题有误。 JSON 响应是当我使用回调=?时。如果我有 callback=voimakaksikkoStats 那么响应是空的。
    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 2011-09-24
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多