我有一些在开发中运行良好的代码。
原始代码
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: [",", " "]
});
});