2015-11-06 52 views
3

我正在嘗試獲取在AngularJS中完成的由SPA生成的完整html。如何從ajax獲得SPA的完整html?

  $.get('http://localhost:3388/' + d.response.path, function (d) { 
       $('#templateContainer').html(d); 
      }); 

但它只是重新調整基本HTML結構,而不是其在SPA是由AJAX生成的動態HTML(我想知道這是爲什麼SPA是不利於搜索引擎優化)。

我相信可能存在一些技術/技巧來解決這個問題。 Chrome例如當你檢查元素時,它能夠從AJAX渲染所有html。

也許我在google上沒有使用正確的關鍵字。人們一直在做什麼來解決這個問題?

UPDATE

只是要清楚我的情況。我試圖從這個SPA中獲得完整的HTML,以向用戶顯示模板預覽。

我有許多不同的模板與不同的SPA。我想通過AJAX而不是IFRAME顯示這些實時模板。使用IFRAME的作品,但不是很好。

+0

您所獲得的ajax resposne應該由您的SPA直接處理以成爲您的完整頁面,並且應該由SPA加載而不是通過簡單的ajax請求。 – AndreaBogazzi

+0

你試過'$('html')。html();'? – Rayon

+0

@RayonDabre,是的。 – Ventura

回答

0

您可以在SPA中生成整個頁面,但這不是您在此情況下不應使用SPA的目標。

因爲SPA的目標是僅獲取頁面的某些部分並在必要時加載它們,所以如果您關心像prerender.io這樣的搜索引擎優化爬蟲,您應該嘗試一箇中間件,您可以創建自己的服務器或使用其服務開源。

但生成SPA全頁面全部遇難爲什麼你應該使用一個SPA的原因。最好的問候:)

0

你會得到原始html,因爲服務器不呈現您的應用程序,這是預期的行爲,沒有錯誤。

S.P.A通常是ClientSide應用程序,這意味着瀏覽器必須渲染AngularApp!

當然瀏覽器不呈現任何東西,因爲你的代碼是異步注入dom的,所以你需要手動編程AngularJS引導而不是通過指令ng-app

順便說一下,有很多方式可以讓您的應用程序的服務器端渲染,對https://prerender.io/看看...

如果你的目標是有一個良好的索引 ...加載通過jQuery的應用程序是一個不好的解決方案,因爲搜索引擎爬蟲不能夠處理JavaScript,這不是一個角度特定的問題,每個應用程序內置的JavaScript都有這個問題。

最好的解決方案應該有一個完整的角度應用程序,並且只爲抓取工具實現服務器端預渲染(使用prerender.io)。

希望有所幫助!

+0

「當然瀏覽器不會渲染任何東西,因爲你的代碼是異步注入dom的,所以,你需要手動編寫AngularJS引導程序,而不是通過ng-app指令。」......這是一個很好的提示。我會稍後再試,並讓你知道。 – Ventura

相關問題