Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 从rails返回JSON响应_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 从rails返回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

我试图使用ajax创建一个新的数据注册表,然后将其返回到Rails4中创建为JSON的页面

这是我的看法

    <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对象