【问题标题】:Trouble with jquery.getJSON prints as undefined or states the function is undefinedjquery.getJSON 的问题打印为未定义或声明该函数未定义
【发布时间】:2013-01-23 03:10:47
【问题描述】:

这变得非常令人沮丧,我认为这会更容易做,我想做的只是使用我作为 API 创建的 Rails 应用程序,我似乎无法让它工作所以我创建了一个快速的小测试应用程序来消除任何可能真的很复杂的事情,我知道非常基本的 java 脚本,我的经验并没有比使用 Jquery 获得各种效果等更进一步。

我正在使用 rails-api gem,我在这个测试中所做的只是运行

Rails g scaffold user name

没有创建任何视图或类似的东西,当您导航到用户路径时,您将看到一个包含用户的 json 数组(当前唯一的字段将被创建、更新、名称和 ID)

这是我的代码。

$(document).ready(function(){


$('#new_user').submit(function(e) {
  $.post('/users', $(this).serialize());
  this.reset();
  e.preventDefault();
});

$.getJSON('/users', function(users) {
  $.each(users, function(user) { 
    var output = "<li>" + user.name + "</li>";
    $('#content ul').append(output);
 });
});

});

.getJson 指向的 json 是什么样子的

[{"user":{"created_at":"2013-01-23T02:30:42Z","id":1,"name":"test","updated_at":"2013-01-23T02:30:42Z"}},
{"user":{"created_at":"2013-01-23T02:31:49Z","id":2,"name":"test","updated_at":"2013-01-23T02:31:49Z"}}]

发布工作正常,但是当运行时,字段打印未定义,以前如果我输入 user.user.name 它会正常工作,但显然这似乎不是最好的路线。

我是否遗漏了什么或者这比我最初更复杂,但我认为为我的应用程序创建 API 客户端真正需要的只是像我在这里一样解析 json 并简单地输出它到 div。

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3 json


    【解决方案1】:

    您需要使用user.user.name$.each 遍历数组,但每个对象都有一个带有 user 键的对象,name 键在其中。

    http://jsfiddle.net/DC5Gg/

    【讨论】:

    • 虽然看起来不是一个非常干净的方法,但我读过的每个示例都是按照我写的方式进行的,我不应该只是能够打印 Object.钥匙?其中用户是对象,名称是键。我觉得我目前的方式是试图在我的函数中运行一个函数,还是我很困惑?
    • 一旦达到 JS 级别,您就不再控制如何从服务器构造 JSON。似乎是服务器端的问题。不过,我不是 Rails 开发人员。
    • Json 的格式似乎相当正常,Rails 甚至不应该真正发挥作用,它只是为我生成 json。如果是这样的话,那么从技术上讲,这应该可行,不是吗?由于json的格式基本上就是{"user":{"name":"test"}}
    • @charles.schlue JSON 对象是{"user:{"name":"test"}}。假设这个对象存储在一个变量user中,那么你可以用user.user.name得到"test"的值。如果存储在名为charles 的变量中,它将是charles.user.name。你看到了吗?
    • 我想这是有道理的,现在我只是在使用 this.user.name 因为它至少感觉我没有重复自己那么多,我在这里提出问题,是无论如何要打印它而不将其存储在变量中?或者只是通过简单地执行 User.name 来打印信息?我问是因为你通常会如何打印用户名或使用纯 Rails 发布。
    猜你喜欢
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2018-02-04
    • 2021-06-22
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多