1

我想知道使用 PHP 或 JS 加载子页面是否更好。到目前为止,我一直在使用 JS(严格来说是 jQuery)来提供一些精美的加载动画,但这种技术有一个严重的缺点——它不能更改 URL 地址,因此用户无法使用浏览器的后退按钮,也不能共享确切子页面的 URL。此外,我不确定搜索引擎机器人是否识别基于 JS 的子页面。或者也许我错了,这一切都可以用 JS 来实现?

如果不是,那么在 PHP 中组织子页面的“正确方法”是什么?即使是小型网站,我也必须使用框架吗?到目前为止,我一直只使用 PHP 的include()方法来达到这个目的。

4

4 回答 4

1

好方法(没有最好的方法):使用服务器端语言(如 PHP)进行模板。将 Javascript/jQuery 置于其之上 - 这样您就拥有了两全其美的效果,即为启用了 javascript 的用户提供精美的动画,以及作为后备的仍然可以工作的页面。还有一些 jQuery 历史插件可以在 ajax 加载后启用浏览器中的书签/历史记录。

您不需要小型站点的框架。但是,如果您想根据用户输入加载内容,您需要一种验证请求变量的方法,而框架可能会对此有所帮助。

至于 javascript 方法中的 SEO,搜索引擎通常不执行 javascript。但是,它们会适当地索引您通过 javascript 提取的文件(我猜您将内容存储在将被索引的文本文件或 html 文件中)。

于 2013-08-30T07:06:31.267 回答
1

是的,JavaScript 可以更新浏览器的 URL,但它只适用于 HTML5 兼容的浏览器。

https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Manipulating_the_browser_history

replaceState函数更改浏览器中的 URL(无后退按钮);该pushState函数将新 URL 推送到浏览器,以便可以使用后退按钮。

例子:

history.pushState({}, 'Title', 'foo.html');

这可能会帮助您解决问题。

于 2013-08-30T07:35:47.153 回答
0

The method I used was to have sub-forms written in PHP and loaded via an AJAX call done with JQuery.

In reality, the AJAX called a PHP responder and passed a value with the form name. The form was retrieved [with include(...)] and the resultant HTML captured using output buffering.

The folder layout I used was:

lib
|
+-subforms
| |
| +-admin
| | +-aform1.php
| | +-aform2.php
| | + :
| | + aformn.php
| |
| +-client
| | +-cform1.php
| | +-cform2.php
| | + :
| | + cformn.php
|
+-supportFunctions.php

where lib refers to the include path for the app

The AJAX call passed the value selected in a drop-down box which correlates to the form name to retrieve.

于 2013-08-30T10:24:29.383 回答
0

用 JS 加载子页面对于动态内容是有意义的。对于静态页面,我建议使用 PHP。

您确实不需要使用框架,但请确保不要包含使用不受控制的 GET/POST 变量的文件(出于安全原因)。

于 2013-08-30T07:10:38.520 回答