我想做一个常见问题面板,当用户问它在部门顶部显示的任何问题而无需重新加载页面时,我想我必须每隔几秒钟就与数据库建立连接。现在的问题是,如何在不重新加载页面的情况下建立连接,以及如何显示新问题?
您有两种选择:
Ajax,它允许您使用JavaScript从服务器检索数据,然后可以使用它来操作DOM。Ajax的基础是XMLHttpRequest对象,它使您可以在JavaScript中完全检索后台数据。请注意,Ajax受同一起源策略的限制,但是对于您所描述的情况,这很好-您将从同一起源加载数据。
XMLHttpRequest
框架(例如iframe元素),您可以通过设置框架的src属性将其加载到其中。
iframe
src
在这两者之间,Ajax更加灵活。
参考资料/进一步阅读:
旁注:尽管显然您可以XMLHttpRequest直接使用和DOM方法,但是请注意,存在跨浏览器的差异(以及彻底的错误),可以通过jQuery,Prototype,YUI,Closure或任何其他不错的库为您平滑这些差异。在其他几个人中。它们还提供了许多有用的实用程序功能,使您可以专注于要解决的实际问题,而不必关注管道的详细信息。
例如,以下是使用jQuery向服务器发送Ajax请求并使用服务器发送回的HTML片段更新页面上的元素的方式:
$("#target").load("get_the_data.php", {article: x});
就是说:请求一个HTML片段,get_the_data.php将参数article和x变量值一起发送给它,然后将该HTML片段放入具有HTML id“目标”的元素中。如果您不使用库,那将是十行不错的代码。现在,这不是很多,但要反复重复(并在此过程中,通过IE查找围绕元素的IE错误id),您将了解如何将其累加。
get_the_data.php
article
x
id
我确实建议您阅读上面的参考资料,以便您知道库是如何做的(这不是魔术),但是没有理由不利用人们所做的辛勤工作来简化这些工作。