无法访问json对象属性,并且在rails视图中未显示值

时间:2018-03-27 09:57:43

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

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

我关注的是代码。

控制器

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。在这里,在成功功能中,它只是警告未定义,我不知道出了什么问题。

这是样本回复。

enter image description here

1 个答案:

答案 0 :(得分:1)

.success(function(response){
      alert(response.id);

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

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

说明

您的回复已采用JSON格式,您已使用dataType:&#34; JSON&#34;在你的AJAX调用中。这样就可以在服务器和客户端之间传输JSON数据。 当您的响应已经是JSON格式时,您可以使用其属性而无需解析它。即响应。

如果你还没有使用过dataType:&#34; JSON&#34;并且您要将控制器中的json编码响应传递给视图文件,您必须首先解码响应以获取其值。

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