从控制器检索json值到ajax函数

时间:2014-03-28 07:44:51

标签: jquery ruby-on-rails ajax json

我有这个ajax代码

$(document).ready(function() {
        for(var i=0;i<8;i++){
        $(".exac").append("<div class='ex' id='eas"+i+"' style='cursor:pointer'><h1 id='h1'></h1></div>");
        }
        $('.ex').click(function ()
        {
            var x=$(this).prop("id");
            $.ajax({
                type: "POST",
                contentType: "application/json",
                dataType: "json",
                url: "/random/random", 
                success: function(msg){    
            alert(msg);  
                             if(msg==01101){
                            //$('.ex').attr('disabled','disabled');
                            $(".ex").off('click');
                            $("#hello").append("<button><a href='reset.jsp'>Reset</a></button>");
                        }
                        else{
                    $('<p>'+msg+'</p>').appendTo("#"+x);
                    $("#"+x).off('click');
                   }
               }
            });
        });
        $('#button').removeAttr('disabled');
    });

这是我的控制器

class RandomController < ApplicationController

def random
@n = 8
    respond_to do |format|
      #format.json { render :json => index }
      format.json{render :json => ActiveSupport::JSON.encode( @n )}
        format.html { redirect_to action: "index" }

    end
end

end

我使用ajax选项进入控制器,我也被重定向回索引页面,但我无法在索引页面上收到@n=8的值。我错过了一些步骤?

这是我在控制台中遇到的错误

enter image description here

2 个答案:

答案 0 :(得分:0)

我不熟悉红宝石和铁轨。然而; console.log(msg)而不是alert(msg),您将看到您的数据结构,然后您可以读取数据msg.content。

我希望这有帮助!

答案 1 :(得分:0)

回答我的上述问题 我的观点

 $.ajax({ url: 'random',
  type: 'POST',
  beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
  data: {user:name},
  success: function(response) {
    var foo = $.parseJSON(response);
    if(foo==1001){
      alert("You can select only once");
    }
    else{
       $('<p>'+foo+'</p>').appendTo("#"+x);
        $("#"+x).off('click');
    }
  }
});

在控制器中 我必须像这样发送响应

render :text => @r.to_json