【问题标题】:Unable to access json object property and value is displayed undefined in rails view无法访问 json 对象属性和值在 rails 视图中显示为未定义
【发布时间】:2018-09-05 16:21:15
【问题描述】:

我几乎看过类似的问题,但我的问题还没有解决。

我有以下代码。

控制器

def create
    @task_list = TaskList.new(task_list_params)

    if @task_list.save
        respond_to do |format|
            format.json { render json: @task_list}
        end
    else
        return
    end
end

Ajax 脚本

$(document).on('click','.add', function(){

  count = 0;
  user_id = $('#user_id').val();
  var name = $('.new-list').val();
  var current = $(this);
  if(name){
    $.ajax({
      method: 'POST',
      url: action,
      dataType: 'JSON',
      data: { 
        task_list: {
          name: name, 
          user_id: user_id 
        }
      }
    }).success(function(response){
      var data = JSON.stringify(response);
      alert(data.id);
      $(current).parent().parent().parent().before(
        '<div class="col-md-12">'+
          '<a href="task_list/" class="btn btn-xs list ">'+name+'</a>'+
        '</div>'
        );
      $(current).parent().parent().parent().remove();
      $('.add-list').show();
    });
  }else{
    alert('please add title');
  }

});

我只想通过ajax post请求获取刚刚保存到数据库的记录的id。在这里,在成功函数中它只是提醒未定义,我不知道出了什么问题。

这是示例响应。

【问题讨论】:

  • 直接使用response.id,不需要JSON.stringify()

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


【解决方案1】:
.success(function(response){
      alert(response.id);

从您的成功函数中删除 JSON.stringify。响应已经是 JSON 格式,您可以直接从中获取值。

JSON.stringfy 将 javascript 对象转换为字符串。

说明

您的响应已经是 JSON 格式,并且您在 AJAX 调用中使用了 dataType: "JSON"。这将使在服务器和客户端之间传输 JSON 数据成为可能。 当您的响应已经是 JSON 格式时,您可以使用它的属性而无需解析它。即response.id

如果您没有使用 dataType: "JSON" 并且您将 json 编码响应从控制器传递到查看文件,您必须首先解码响应以获取其值。

var d = $.parseJSON(response);
alert(d.id);

【讨论】:

  • 感谢您的回答,它完美运行,您能否详细解释一下出了什么问题,我是前端和 Rails 的新手。
  • 请查看我的回答中的解释。希望你现在清楚。如果它解决了您的问题,请标记答案已批准。 :) 谢谢@SagarGautam
  • 感谢您的时间和友好的信息,我会接受这个答案
猜你喜欢
  • 2014-10-16
  • 2019-05-21
  • 2021-11-18
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2020-06-02
相关资源
最近更新 更多