0

developmentでうまく動作するコードがいくつかあります。

オリジナルコード

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 エラーが発生します: Origin is not allowed by Access-Control-Allow-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 に答える