【问题标题】:AJAX request returning JSON?AJAX 请求返回 JSON?
【发布时间】:2013-04-23 17:01:53
【问题描述】:

所以我使用 AJAX 从网站上抓取玩家姓名和他们各自的评分。我让 AJAX 返回一个 JSON 对象,我正在尝试使用 jQuery 将 JSON 对象的每个元素作为列表项附加到有序列表中。

代码如下:

$('#rankings_link').click(function(){
    $.ajax({
        dataType: 'json',
        url: '/rankings',
        type: 'get'
    }).done(function(received_data){
        for (var m = 0; m < received_data.length; m++) {
            $('#rankings ol').append('<li>' + received_data[m] + '</li>');
  }

但是当我查看我的 localhost:3000/rankings 页面时,它只是一大堆玩家姓名(正确排序),但根本没有格式化为列表。

这是怎么回事?

提前致谢, 马里格斯

【问题讨论】:

  • 在此处发布大型数组
  • 您在donclick 函数中缺少结束})。将其放入 Stack Overflow 是否只是一个错误?我怀疑这是你的问题的原因,但这是一个问题!
  • /rankings 是您从哪里获得 json 的服务吗?为什么你会直接导航到它期望格式化列表?
  • 这与 Ruby 和 Rails 有什么关系?
  • 你搞定了吗?

标签: jquery ruby-on-rails ruby ajax json


【解决方案1】:

http://www.w3schools.com/json/json_eval.asp

我会使用 eval 将您的 json 字符串转换为一个对象,您可以通过该对象循环一个数组

var rankings = eval ("(" + received_data + ")");

for (var m = 0; m < rankings.length; m++) {
        $('#rankings ol').append('<li>' + rankings[m].(whatever piece of data you want from your json object) + '</li>');

}

如果您仍然遇到问题,请告诉我您的 json 字符串是什么样的。

【讨论】:

  • 或者,您知道,您可以使用内置的 json 解析器 JSON.parse(received_data)(以 json2.js 作为备份),或者,由于包含 jQuery,所以使用它的解析器,它的实现方式相同。 $.parseJSON(received_data)。哦,等等,我们正在使用 $.ajaxdataType:"json",所以 jQuery 已经为我们做到了。
  • 请不要将 w3schools 链接为资源。更多信息在这里:meta.stackexchange.com/questions/87678/…
  • 所以我仍然无法让它工作 :( 对于它的价值,我的“/rankings”页面甚至没有显示我有一个#rankings id 或
      查看源代码时的标记...
【解决方案2】:

我会使用 $.each 循环对接收到的数据进行排序。 json 对象是一组无序的键/值对。当您使用 $.each 循环时,您可以将它们分开并利用您正在寻找的值(玩家信息)。像这样:

$('#rankings_link').click(function(event){
    event.preventDefault();
    $.ajax({
        dataType: 'json',
        url: '/rankings',
        type: 'get'
    }).done(function(received_data){
        $.each(received_data, function(index, player){
            $('#rankings ol').append('<li>' + player + '</li>');
        });
    });
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2011-10-19
    • 2016-03-31
    • 1970-01-01
    • 2012-12-07
    • 2021-11-29
    相关资源
    最近更新 更多