2012-04-26 58 views
0

我在Rails應用程序有一個控制器,renderes得到JSON數據JSON數據如何從遠程應用程序

def show 
@visit = Visit.all 
@count = @visit.first.count unless @visit == [] 
respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @visit.first } 
    format.json {render :partial => "this.json"} 
end 
end 

我我的其他應用程序,我做一個簡單的Ajax請求,從我的觀點

得到JSON字符串
$.ajax({ 
url: 'http://url.com/show.json', 
success: function(data){ 
    console.log(data); 
    $('#data').html(data); 
} 
});​ 

的跨域頭,我使用機架一個Cors

use Rack::Cors do 
allow do 
    origins '*' 
    # regular expressions can be used here 
    resource '/countvisit/*', :headers => :any, :methods => :any 
    # headers to expose 
end 
end 

我不是從阿賈克斯[R gwetting任何東西eQUEST的。任何想法爲什麼這可能發生?

+0

是你的部分文件命名是否正確? _this.json.erb? – 2012-04-26 19:07:07

回答

2

您試圖呈現'this.json'部分而不是實際的json字符串。

是不是應該是format.json {render :json=> "this.json"}

+0

現在我得到這個 XMLHttpRequest無法加載http://url.com/show.json。 Access-Control-Allow-Origin不允許Origin http://fiddle.jshell.net。 上午我做了錯誤的crossdomain文件 – Leon 2012-04-26 19:25:56

+0

感謝所有的答覆,我通過在url的末尾添加一個回調並獲取jsonP來修復它,所以現在我能夠獲得該值。 – Leon 2012-04-26 19:37:32

+0

大家好,我設法通過使用jsonp來解決這個問題,但它只能在jsfiddle中工作。在我的主機,我仍然得到crossdomain錯誤。任何想法爲什麼會發生? – Leon 2012-04-27 13:52:48