Javascript rubyonrails中ajax帖子后未定义的追加
在使用ajax发布之后,我试图添加一些信息 这是我的路线:Javascript rubyonrails中ajax帖子后未定义的追加,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,在使用ajax发布之后,我试图添加一些信息 这是我的路线: match 'api/people/', to: 'people#people_get_all', via: [:get] match 'api/people/:id', to: 'people#people_get', via: [:get] match 'api/people/', to: 'people#create', via: [:post] 这是我的javascript: var $people = $('#people
match 'api/people/', to: 'people#people_get_all', via: [:get]
match 'api/people/:id', to: 'people#people_get', via: [:get]
match 'api/people/', to: 'people#create', via: [:post]
这是我的javascript:
var $people = $('#people');
var $first_name = $('#first_name');
$('#add_user').on('click', function(){
var person = {
person: {
first_name: $first_name.val(),
last_name: $last_name.val(),
location: $location.val(),
phone: $phone.val()
}
};
$.ajax({
type: 'POST',
url: '/api/people/',
data: person,
success: function(newPerson){
$people.append('<p><strong>First Name: </strong>' + newPerson.first_name + '</p>');
},
error: function(){
alert('error saving person to database');
}
});
});
这是按下按钮后发生的情况,它将显示未定义的
您需要使用数据类型:
选项告诉$.ajax
响应是JSON
$.ajax({
type: 'POST',
url: '/api/people/',
data: person,
dataType: 'json',
success: function(newPerson){
$people.append('<p><strong>First Name: </strong>' + newPerson.first_name + '</p>');
},
error: function(){
alert('error saving person to database');
}
});
$.ajax({
键入:“POST”,
url:“/api/people/”,
资料:人,,
数据类型:“json”,
成功:功能(newPerson){
$people.append(“名字:”+newPerson.First_Name+”);
},
错误:函数(){
警报(“将人员保存到数据库时出错”);
}
});
确切的错误消息是什么?所有的Javascript代码都在$(document).ready()
?嘿@Barmar我添加了一张关于发生了什么的图片,没有,但我猜我不需要它,因为它正确地发布到了数据库中,这里的问题是附加通过post添加的新信息。我在$(function(){…})下有代码
我以为您收到一个Javascript错误,说$people.append
未定义。在$.ajax
调用中还需要数据类型:“json'
。
$.ajax({
type: 'POST',
url: '/api/people/',
data: person,
dataType: 'json',
success: function(newPerson){
$people.append('<p><strong>First Name: </strong>' + newPerson.first_name + '</p>');
},
error: function(){
alert('error saving person to database');
}
});