我有一些代码可以在开发中正常工作。
原始代码
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: [",", " "]
});
});
答案 0 :(得分:2)
试试这个
而不是
$.getJSON('http://localhost:3000/tags.json' + '&callback=?', function(data)
使用此
$.getJSON('/tags.json' + '?callback=?', function(data)