2012-03-23 62 views
0

請原諒這個問題的noob-ish性質。在主頁上傳遞json負載

我有一個項目,主頁是一個大型谷歌地圖,帶有標記,當點擊時顯示包含在標記位置拍攝的照片的信息框。我還有一張照片#show action,用戶可以在photos/show.html.erb視圖中看到各個照片。我最近爲每張照片整合了「tweet」和「FB-like」按鈕;所以現在我更有可能會讓觀看者從Twitter或FB中進入我的網站,他們點擊了像「www.photoshowisus.com/photos/34」這樣的網址。

現在我想更改照片#show動作,以便照片及其標記顯示在主頁地圖上而不是單獨的視圖中。

從照片渲染主視圖#顯示動作不是問題(我不是那麼多的noob),但我確實有兩個問題。首先,服務器photo#顯示響應如何呈現'pages/home'以及id參數中請求的照片的json?我想我可以將地圖設置爲嵌套佈局,這樣我就不必渲染主頁了,但我仍然需要一些將json對象傳遞給我的application.js代碼的方法。

第二,我如何「抓住」我的application.js代碼中的json對象?有沒有辦法通過像.ready()這樣的事件來實現它?請注意,一旦我有權訪問json對象,我已經很好地使用我的javascript例程了。

在此先感謝您的小時幫助!

回答

1

如何通過Ajax使用jQuery的.getJSON()在文檔就緒?

$(function(){ 
    $.getJSON("http://yourdomain.com/path/to/json", function (data){ 
     // Do what you like with your JSON available in the data-variable 
    }); 
}); 
+0

Christofer,yep。這就是我目前正在實施解決方案的方式。唯一的問題是它需要兩次服務器往返。我希望有一個解決方案可以在第一次使用json。 – 2012-03-23 18:10:25

+0

@chuckw我想你可以讓服務器生成JSON並將其存儲在頁面中的JavaScript變量中,當頁面生成服務器端時。然後這個變量可以被你的JS文件訪問(我認爲?) - 或者你可以把你的.js文件改成一個.rb文件(或者ruby擴展名),然後生成JSON並將它存儲在在從服務器發送它之前,JavaScript文件中的變量。只要您在加載JavaScript文件時指定'type =「text/javascript」',瀏覽器就不會介意使用其他文件擴展名。 – 2012-03-23 18:18:40

+0

我現在將JSON存儲在一個js變量中,並將它傳遞到頁面中,就像您所建議的那樣。訪問js變量在客戶端沒有問題。感覺有點有趣的生成js內聯,但它的確有竅門!謝謝。 – 2012-03-23 22:08:58