400使用jQuery.post时出现错误请求错误
我是Rails新手,正在尝试jQuery.post使用ajax发布表单并显示结果 但我只有在单击“提交”时才能在控制台中看到:400使用jQuery.post时出现错误请求错误,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我是Rails新手,正在尝试jQuery.post使用ajax发布表单并显示结果 但我只有在单击“提交”时才能在控制台中看到: POST http://localhost:3000/main/newStuff 400 (Bad Request) 我正在看本书底部的例子 以下是我的ajax代码: $( "#new_stuff_form" ).submit(function( event ) { // Stop form from submitting normally even
POST http://localhost:3000/main/newStuff 400 (Bad Request)
我正在看本书底部的例子
以下是我的ajax代码:
$( "#new_stuff_form" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
// Get some values from elements on the page:
var $form = $( this ),
title = $form.find( "#new_stuff_title" ).val(),
url = $form.attr( "action" );
// Send the data using post
var posting = $.post( url, { title: title } );
posting.done(function( data ) {
console.log(data);
});
posting.fail(function( data ) {
console.log(data);
});
});
这是我的控制器:
def createStuff
@stuff = Stuff.new(stuff_params)
@stuff.save
render json: {status: "ok"}
end
private
def stuff_params
params.require(:stuff).permit(:title, :due_date)
end
以下是我的观点:
<%= simple_form_for @stuff, url: stuff_create_path, html: {id: "new_stuff_form",class: "form-horizontal", role: "form"} do |f| %>
<div class="form-group">
<label for="new_stuff_title" class="col-sm-2 control-label">Title</label>
<div class="col-sm-10">
<%= f.input_field :title, class: 'form-control', id: 'new_stuff_title' %>
</div>
</div>
<%= f.button :submit %>
另外,当我不使用ajax时,它可以工作,因此我认为控制器和视图都可以。尝试使用以下代码:
$.post( url, { title: title }, function() {
alert( "success" );
})
.done(function(data) {
console.log(data);
})
.fail(function(data) {
console.log(data);
}), dataType: "json" );
我想你需要添加你的
数据类型
,请看这方面的答案。你能设置这个控制台.log
url和title变量以确保它们是正确的吗?嗨@MohamedYakot,是的,我在我的代码中添加了console.log(url)和console.log(title),输出是“/main/newStuff”,并在“title”的表单中输入正确的字符串。我看到您的操作名为createStuff
,而不是newStuff
,您是否忘记更改它?。如果没有,请键入newStuff
操作,但我的路线设置是:post'main/newStuff'=>'main#createStuff',as::stuff\u create
有问题吗?
$.post( url, { title: title }, function() {
alert( "success" );
})
.done(function(data) {
console.log(data);
})
.fail(function(data) {
console.log(data);
}), dataType: "json" );