我想知道使用PHP还是JS加载子页面更好。到目前为止,我一直在使用JS(严格地说是jQuery)来提供一些花哨的加载动画,但这种技术有一个严重的缺点——它不能更改URL地址,因此用户无法使用浏览器的后退按钮,也不能共享确切子页面的URL。此外,我不确定搜索引擎机器人是否能识别基于JS的子页面。或者也许我错了,这一切都可能与JS有关?
如果没有,那么用PHP组织子页面的"正确方法"是什么?我是否有义务使用框架,即使是小型网站?到目前为止,我只使用了PHP的include()
方法。
是的,JavaScript可以更新浏览器的URL,但它只能在符合HTML5的浏览器中工作。
https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Manipulating_the_browser_history
replaceState
功能更改浏览器中的URL(无后退按钮);CCD_ 3功能将新URL推送到浏览器以便可以使用后退按钮。
示例:
history.pushState({}, 'Title', 'foo.html');
这可能会帮助你解决问题。
好方法(没有最好的方法):使用服务器端语言(如PHP)进行模板化。把Javascript/jQuery放在上面,这样你就有了两个世界中最好的,一个是为支持Javascript的用户制作的精美动画,另一个是一个仍在工作的页面作为后备。还有jQuery历史插件,可以在ajax加载后在浏览器中启用书签/历史记录功能。
您不需要小型网站的框架。但是,如果您想根据用户输入加载内容,则需要一种验证请求变量的方法,而框架可能会对此有所帮助。
至于javascript方法中的SEO,搜索引擎通常不会执行javascript。然而,它们会对您通过javascript提取的文件进行索引(我猜您将内容存储在将被索引的文本文件或html文件中)。
使用JS加载子页面对动态内容很有意义。对于静态页面,我建议使用PHP。
您确实不需要使用框架,但请确保不要包含使用不受控制的GET/POST变量的文件(出于安全原因)。
我使用的方法是用PHP编写子表单,并通过JQuery完成的AJAX调用加载。
实际上,AJAX调用了一个PHP响应程序,并传递了一个带有表单名称的值。[使用include(...)
]检索表单,并使用输出缓冲捕获结果HTML。
我使用的文件夹布局是:
lib
|
+-subforms
| |
| +-admin
| | +-aform1.php
| | +-aform2.php
| | + :
| | + aformn.php
| |
| +-client
| | +-cform1.php
| | +-cform2.php
| | + :
| | + cformn.php
|
+-supportFunctions.php
其中lib
是指应用的包含路径
AJAX调用传递了在下拉框中选择的值,该值与要检索的表单名称相关。