使用jQuery.post时发生400个错误的请求错误

问题描述:

我是Rails的新手,正在尝试使用jQuery.post使用ajax发布表单并显示结果。使用jQuery.post时发生400个错误的请求错误

POST http://localhost:3000/main/newStuff 400 (Bad Request) 

我在看的例子在this jQuery page底部:

但我在我的控制台,当我点击提交只得到这一点。

这里是我的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 %> 

这里是我的路线设置:

post 'main/newStuff' => 'main#createStuff', as: :stuff_create 

P.S.它工作时,我不使用ajax,所以我认为控制器和视图是好的。

+0

你能设置这个'console.log' url和title变量来确保它们是正确的吗? – 2014-09-05 18:32:38

+0

Hi @MohamedYakot,是的,我添加了console.log(url)和console.log(标题)到我的代码和输出是“/ main/newStuff”和正确的字符串我输入到“标题”的形式。 – czphilip 2014-09-05 18:50:09

+0

我看到你的动作叫'createStuff',而不是'newStuff',你忘了改它吗?如果没有请输入'newStuff'动作 – 2014-09-05 18:57:28

尝试使用下面的代码:

$.post(url, { title: title }, function() { 
    alert("success"); 
}) 
.done(function(data) { 
    console.log(data); 
}) 
.fail(function(data) { 
    console.log(data); 
}), dataType: "json"); 

我认为你需要添加你的dataType,请参阅本question答案。