Access-Control-Allow-Origin getJSON Rails

时间:2013-08-17 23:24:11

标签: jquery ruby-on-rails json cors

我有一些代码可以在开发中正常工作。

原始代码

respond_to :json

def index
  @tags = current_user.tags
  respond_with(@tags.map{|tag| {:id => tag.id, :name => tag.name} })
end

,路径文件为

get "tags/index"

我的jQuery文件有这样一行

$.getJSON('http://localhost:3000/tags.json', function(data) {

然而,当将其推送到生产时,我收到错误消息 XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用Origin。做了一些研究之后

Here HereHere

我将代码更改为

新代码

def index
  @tags = current_user.tags
  respond_to do |format|
    if params[:callback]
      format.json { render :json => @tags.map{|tag| {:id => tag.id, :name => tag.name}   }.to_json , :callback => params[:callback]}
    else
      format.json { render :json => @tags.map{|tag| {:id => tag.id, :name => tag.name} }}
    end
  end
end

$.getJSON('http://localhost:3000/tags.json' + '&callback=?', function(data) {

使用相同的路线。

这里发生了什么?我仍然得到同样的错误,为什么回调没有解决它?

所有jQuery代码

  var items = [];
  var prepopulate = [];

  $(function () {
     var myVarsJSON = $("#my_vars_json").html(),
          myVars     = $.parseJSON(myVarsJSON);
        $.each(myVars, function(i, obj) {
          return prepopulate.push(obj.name);
          });

    $.getJSON('/tags.json' + '&callback=?', function(data) {
        $.each(data, function(i, obj) {
            return items.push(obj.name);
            });
     $("#article_tag_ids_edit").val(prepopulate).select2({
      width: "element",
      tags: items,
      tokenSeparators: [",", " "]
      });
    });
  });

  $.getJSON('/tags.json' + '&callback=?', function(data) {
        $.each(data, function(i, obj) {
            return items.push(obj.name);
            });

      $("#article_tag_ids").select2({
      width: "element",
      tags: items,
      tokenSeparators: [",", " "]
    });
  });

1 个答案:

答案 0 :(得分:2)

试试这个

而不是

$.getJSON('http://localhost:3000/tags.json' + '&callback=?', function(data)

使用此

$.getJSON('/tags.json' + '?callback=?', function(data)