0

我有一些在开发中运行良好的代码。

原始代码

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。在做了一些研究之后

这里这里_

我把我的代码改成了这个

新代码

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: [",", " "]
    });
  });
4

1 回答 1

2

试试这个

代替

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

用这个

$.getJSON('/tags.json' + '?callback=?', function(data)
于 2013-08-18T00:23:04.927 回答