我正在学习 AJAX,因为我当前的项目需要它。我有一个提要,当将新行添加到 MYSQL 表时,我想实时更新该提要。我实际上已经用 node.js 做到了这一点,但不幸的是我的客户端服务器不能使用 NODE,所以我试图看看它是否可以使用 AJAX。
谢谢您的帮助!
我正在学习 AJAX,因为我当前的项目需要它。我有一个提要,当将新行添加到 MYSQL 表时,我想实时更新该提要。我实际上已经用 node.js 做到了这一点,但不幸的是我的客户端服务器不能使用 NODE,所以我试图看看它是否可以使用 AJAX。
谢谢您的帮助!
用 jquery 做 ajax 更容易
$("#update_charges").live("click",function() {
$.ajax(
{
type: "POST",
url: "phpfile_toadd_updaterecord.php",
data: "passvalue="+$('input_field_name').val(),
success: function(msg)
{
$('#result_div').html(msg); //msg contains any test echoed from //phpfile_toadd_updaterecord.php file
}
});//end $.ajax
}
下面可以是您的 html 代码
<form>
<div id="result_div"></div>
<input type="button" name="update_charges" id="update_charges" />
<input type="hidden" name="input_field_name" id="input_field_name" value="anyvalue_to be passed to php file"/>
</form>
您需要让客户端通过轮询不断联系服务器,或者使用诸如comet或websockets之类的推送技术。否则,您的客户无法知道新数据何时到达。
Comet 和 websockets 允许对过程进行最实时的感觉,因为它们实际上在数据可用时立即将数据发送到用户客户端(您连接的浏览器),而轮询只是您的浏览器每隔一段时间查询服务器。
缺点是推送技术,当然还有需要HTTP Keep Alive的彗星,在您的服务器上可能会非常繁重,特别是对于基于进程的服务器(例如 apache),它们的最大连接会很快被填满,然后一直保持到断开连接。它有调整选项和现代设置,但它不是最佳的:这个问题甚至有一个正式的名称c10k,这也是你看到基于事件的服务器最近变得流行的原因之一。
我没有任何方法知道 MYSQL 或 PHP 在更新时可以将更新推送到页面的位置。
最好的选择可能是使用 javascript 运行计时器并定期检查数据库以查看是否有任何更新,
var refreshId = setInterval(function() { checkforUpdates(lastIndex) }, 10000);
将表索引的最后一行传递给 javascript 函数,该函数对 PHP 进行 ajax 调用,查询数据库中的任何新行,如果返回任何更新,则使用 javascript 将它们添加到表中。
如果您还想检查更新的行,那就有点棘手了!