Ruby on rails 4 从rails返回JSON响应
我试图使用ajax创建一个新的数据注册表,然后将其返回到Rails4中创建为JSON的页面 这是我的看法Ruby on rails 4 从rails返回JSON响应,ruby-on-rails-4,Ruby On Rails 4,我试图使用ajax创建一个新的数据注册表,然后将其返回到Rails4中创建为JSON的页面 这是我的看法 <script> $( document ).ready(function() { $("#comments_form").bind('ajax:success', function(data) { alert($.parseJSON(data)); }); $("#comments_for
<script>
$( document ).ready(function() {
$("#comments_form").bind('ajax:success', function(data) {
alert($.parseJSON(data));
});
$("#comments_form").bind('ajax:error', function(xhr, status, error) {
alert(error);
});
});
</script>
<%= form_for([@article, @article.comments.build], remote:'true', format: :json, html: {id: :'comments_form'}) do |f| %>
# form inputs go here
<p>
<%= f.submit %>
</p>
<% end %>
这是控制器
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
respond_to do |format|
format.json { render json: @comment.as_json(only: [:commenter]) }
end
end
end
一切似乎都正常,新记录是通过ajax处理程序创建的:调用success,但是parserJson失败,出现以下错误:
未捕获的语法错误:意外标记o
如果我设置一个断点,这就是我在“数据”中看到的:
我做错了什么
谢谢
绑定到jQuery事件的所有处理程序始终作为第一个参数传递事件对象。额外参数表示在事件参数之后传递的参数。例如,如果额外参数列为[xhr,settings],那么要访问它们,您需要使用functionevent,xhr,settings{}定义处理程序。有关更深入的解释,请参阅本文。
因此,您需要如下更改成功处理程序
$("#comments_form").bind('ajax:success', function(event, data) {
console.log(data);
});
您将对错误处理程序执行相同的操作,将事件作为第一个参数传递,后面跟着代码中的其他参数。注意,您不需要调用parseJSON,因为数据已经是JSON对象