当用户提出任何问题时,我想制作一个faq面板,它显示在分区顶部,而无需重新加载页面。为此,我想每隔几秒钟就必须与数据库建立连接。现在的问题是,如何在不重新加载页面的情况下进行连接,以及如何显示新的问题?
您有两个选项:
-
Ajax,它允许您使用JavaScript从服务器检索数据,然后您可以使用JavaScript来操作DOM。Ajax的基础是
XMLHttpRequest
对象,它允许您在JavaScript中完全在后台检索数据。请注意,Ajax受到同源策略的限制,但就您所描述的内容而言,这很好—您将从同一来源加载数据。 -
框架(例如,
iframe
元素),您可以通过设置其src
属性将内容加载到其中。
在这两者中,Ajax要灵活得多。
参考文献/进一步阅读:
- DOM2核心
- DOM2 HTML
- DOM3核心
- HTML5 Web应用程序API
- XMLHttpRequest对象
附带说明:虽然很明显,您可以直接使用XMLHttpRequest
和DOM方法,但请注意,存在跨浏览器的差异(以及彻底的错误),可以通过jQuery、Prototype、YUI、Closure或其他任何一个好的库来消除这些差异。它们还提供了许多有用的实用程序功能,使您能够专注于试图解决的实际问题,而不是管道的细节。
例如,以下是如何使用jQuery向服务器发送Ajax请求,并使用服务器发回的HTML片段更新页面上的元素:
$("#target").load("get_the_data.php", {article: x});
也就是说:从get_the_data.php
请求一个HTML片段,向它发送带有x
变量值的参数article
,并将该HTML片段放入具有HTML id
"目标"的元素中。如果你不使用库,这将是一个很好的10行代码。现在,这并不多,但要反复重复(在这个过程中,处理通过id
查找元素的IE错误),您可以看到它是如何加起来的。
我建议你阅读上面的参考资料,这样你就知道图书馆是如何做他们正在做的事情的(这不是魔法),但没有理由不利用人们所做的艰苦工作来让这些事情变得更容易。
我认为您需要的是AJAX。这是一种只需部分页面刷新即可联系服务器的方式。当我使用asp.net时,我不知道它是如何与php一起工作的,但这里有一个链接可能会有所帮助。
轮到Ajax了。您需要的是一种名为AJAX的技术。您可以在jQuery库中找到一些可用的东西,它提供了更容易使用Ajax的不同方法。
http://api.jquery.com/jQuery.ajax/
您将通过客户端脚本语言(本例中为Javascript)创建与服务器端编程语言和数据库的关系。这是这些现实的一个例子:
http://jqueryui.com/demos/autocomplete/
您必须研究推送/发布/订阅技术。我所知道的很少是pubnum和commet