Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法访问json对象属性,并且值在rails视图中显示为未定义_Javascript_Jquery_Ruby On Rails_Json_Ajax - Fatal编程技术网

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

Javascript 无法访问json对象属性,并且值在rails视图中显示为未定义,javascript,jquery,ruby-on-rails,json,ajax,Javascript,Jquery,Ruby On Rails,Json,Ajax,我几乎看过类似的问题,但我的问题还没有解决 我有以下代码 控制器 Ajax脚本 }) 我只想获取通过ajax post请求保存到数据库的记录的id。在这里,在成功函数中,它只是警告未定义,我不知道出了什么问题 这是示例响应 从success函数中删除JSON.stringify。响应已经是JSON格式,您可以直接从中获取值 stringfy将javascript对象转换为字符串 解释 您的响应已经是JSON格式,并且在AJAX调用中使用了dataType:JSON。这将使在服务器和客户端之间传输

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

我有以下代码

控制器

Ajax脚本

})

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

这是示例响应

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

stringfy将javascript对象转换为字符串

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

如果您没有使用dataType:JSON,并且要将来自控制器的JSON编码响应传递给查看文件,则必须首先对响应进行解码以获取其值

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

直接使用response.id,您不需要JSON.Stringify谢谢您的回答,它工作得很好。您能详细解释一下哪里出了问题吗?我是前端和rails的新手。请检查我回答中的解释。希望你现在明白了。另外,如果答案解决了您的问题,请将其标记为已批准:谢谢@sagargautam谢谢你的时间和友好的信息,我会接受这个答案
$(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');
  }
.success(function(response){
      alert(response.id);
var d = $.parseJSON(response);
alert(d.id);