我几乎看过类似的问题,但我的问题还没有解决。
我关注的是代码。
控制器
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。在这里,在成功功能中,它只是警告未定义,我不知道出了什么问题。
这是样本回复。
答案 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);