rails和ajax SyntaxError {stack:(...),message:" Unexpected token<"}

时间:2014-05-28 08:57:10

标签: ruby-on-rails ajax json ruby-on-rails-3

我试图每5秒执行一次ajax获取json结果。但是ajax它不起作用我总是得到:

  

SyntaxError {stack:(...),message:" Unexpected token<"}

$(document).ready(function(){
  setInterval(function(){ 
  var url = "/hangout_second_user";

  $.ajax({
    url: url,
    type: "GET",
    data: {"username" : "someusername"},
    dataType: 'json',
    success: function(){
      alert(result);
    },
    error: function(xhr, textStatus, error) {
      console.log("Impossible to connect");
      console.log(xhr.statusText);
      console.log(textStatus);
      console.log(error);
    }
  });
  }, 5000);
});

这是我的控制器的动作:

def hangout_second_user
    @incoming_kid = Kid.where(username: params[:username]).first
    prueba = REDIS.smembers "hangout:#{current_kid.id.to_s}"
        if !prueba.empty?
            current_kid.set_busy_status!
            respond_to do |format|
            format.json { render json: "{url:#{prueba[0].to_s}}", success: :ok, error: false }
          end
        end

  end

更新


我改变了这样的渲染格式:

format.json { render json: prueba[0].to_json, success: :ok, error: false }

但我仍然得到和html文件,这就是我收到错误的原因。请帮忙

2 个答案:

答案 0 :(得分:1)

您应该使用$ .ajax()函数或$ .getJSON()函数,因为$ .getJSON()也将执行AJAX调用。

所以可能的解决方案是:

setInterval(function(){ 

  var url = "/hangout_second_user";

  $.ajax({
    url: url,
    data: {"user_id" : "537c63ea20db9040d2000332"},
    dataType: 'json',
    success: function(result){
      $.each(result, function(i, field){
          alert(result);
      });
    },
    error: function(xhr, textStatus, error) {
      console.log("Impossible to connect");
      console.log(xhr.statusText);
      console.log(textStatus);
      console.log(error);
    }
  });
  }, 5000);

或者:

setInterval(function(){ 

  var url = "/hangout_second_user";

  $.getJSON(url, {"user_id" : "537c63ea20db9040d2000332"}; function(result) {
      $.each(result, function(i, field){
          alert(result);
      });
    });
  }, 5000);

答案 1 :(得分:0)

你不能在javascript中使用“#{current kid.is.to_s}”。尝试将其值存储在隐藏字段中的某个位置并在javascript中访问它