如何通过ajax从SPA获取完整的html?

时间:2015-11-06 10:07:17

标签: javascript jquery html angularjs ajax

我试图在AngularJS中完成由SPA生成的完整html。

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

但是它只重新调整了基本的html结构,而不是由AJAX生成SPA中的动态html(我想知道这是否是SPA对SEO不利的原因)。

我相信可能存在一些技巧/技巧来解决这个问题。例如,当您检查元素时,Chrome可以从AJAX渲染所有html。

也许我没有在谷歌上使用正确的关键字。人们一直在做什么来解决这个问题?

更新

要清楚我的情况。我试图从此SPA获取完整的html,以向用户显示模板预览。

我有许多不同的SPA和不同的模板。我想通过AJAX而不是IFRAME显示这些实时模板。 IFRAME有效,但并不好。

2 个答案:

答案 0 :(得分:0)

您可以在SPA中生成完整页面,但在这种情况下,您不应该使用SPA。

因为SPA的目标是仅获取页面的某些部分并在必要时加载它们,所以如果您关心像prerender.io这样的SEO爬虫,您应该尝试使用中间件,您可以使用它创建自己的服务器或使用他们的服务是开源的。

但在SPA中生成完整页面会导致您使用SPA的所有原因。最诚挚的问候:)

答案 1 :(得分:0)

您将获得原始html ,因为服务器无法呈现您的应用,这是预期的行为,没有错误。

S.P.A 通常是ClientSide应用程序,这意味着浏览器必须在rountime上呈现AngularApp!

当然浏览器没有渲染任何东西,因为你的代码被异步注入到dom中,因此,你需要手动编程AngularJS bootstrapping而不是通过 ng-app 指令。

顺便说一下,有很多方法可以对您的应用进行服务器端呈现,请查看https://prerender.io/ ...

如果你的目标是有一个好的索引 ...通过jQuery加载应用程序是一个糟糕的解决方案,因为搜索引擎爬虫不能处理javascript,这不是一个角度特定的问题,用javascript构建的每个应用都有这个问题。

最佳解决方案应该是一个完整的角度应用程序,并且只有爬虫才能实现服务器端预渲染(使用prerender.io)。

希望有所帮助!