我想知道使用PHP或JS加载子页面是否更好。到目前为止,我一直在使用JS(jQuery,严格来说)来提供一些花哨的加载动画,但这种技术有一个严重的缺点 - 它不能改变URL地址,所以用户没有使用浏览器的后退按钮,也无法共享确切子页面的URL。此外,我不确定搜索引擎机器人是否认识到基于JS的子页面。或者也许我错了,这一切都与JS有关吗?
如果没有,那么在PHP中组织子页面的“正确方法”是什么?我是否有义务使用框架甚至是小型网站?到目前为止,我一直只使用PHP的include()
方法。
答案 0 :(得分:1)
好方法(没有最好的方法):使用服务器端语言(如PHP)进行模板化。把Javascript / jQuery放在其上 - 所以你有两个世界中最好的,为启用javascript的用户制作精美的动画,以及作为后备的仍在工作的页面。还有jQuery历史插件,可以在ajax加载后启用浏览器中的书签/历史记录。
您不需要小型网站的框架。但是,如果要根据用户输入加载内容,则需要一种方法来验证请求变量,而框架可能会对此有所帮助。
对于javascript方法中的SEO,搜索引擎通常不执行javascript。但是,它们可以通过javascript对您输入的文件进行索引(我猜您将内容存储在文本文件或将被编入索引的html文件中)。
答案 1 :(得分: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');
这可以帮助您解决问题。
答案 2 :(得分:0)
使用JS加载子页面对动态内容很有意义。 对于静态页面,我建议使用PHP。
您确实不需要使用框架,但请确保不要使用不受控制的GET / POST变量包含文件(出于安全原因)。
答案 3 :(得分:0)
我使用的方法是使用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调用传递了一个下拉框中选择的值,该下拉框与要检索的表单名称相关。