无法访问 json 对象属性和值在 rails 视图中显示为未定义
Posted
技术标签:
【中文标题】无法访问 json 对象属性和值在 rails 视图中显示为未定义【英文标题】:Unable to access json object property and value is displayed undefined in rails view 【发布时间】: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()
【参考方案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 感谢您的时间和友好的信息,我会接受这个答案以上是关于无法访问 json 对象属性和值在 rails 视图中显示为未定义的主要内容,如果未能解决你的问题,请参考以下文章
JS:一个对象的属性值在一个字符串中依次包含多个值。如何访问它们?