动态发布数据而不刷新页面

时间:2015-07-11 02:53:05

标签: javascript ajax

我只是想知道如何在不刷新页面的情况下发布数据,例如现在Facebook发布评论时它将被发布并显示给人们而不刷新页面。我知道如何在不使用AJAX刷新页面的情况下在MySQL中插入数据,但问题是:如何在不刷新页面的情况下插入数据并同时获取数据。

谢谢

2 个答案:

答案 0 :(得分:1)

OSDM的答案似乎可以实现您想要的行为,但它并不是您要问的问题。他的回答只会在用户上传某些内容时提供更新,而不是在系统中创建(上传)。

有两种不同的方法可以在服务器中获取新信息:AJAX和WebSockets。

AJAX - AJAX代表异步Javascript和XML。它允许您使用场景后面的特定服务器获取内容,然后您可以将新获取的数据插入到页面中以将其显示给用户。然而,这必须是手动触发的,因此在实时中确实不会发生。您可以手动(例如,通过按下按钮)或在计时器(例如,每5秒,10分钟等)触发数据的提取。重要的是要注意,服务器很难知道页面当前显示的信息,因此每个AJAX调用通常都要求显示所有要显示的信息并重新呈现页面(删除当前内容并插入新获取的内容,其中还包括已经显示的内容。

WebSockets - 可以将WebSockets视为“升级版”。 HTTP连接。客户端和服务器建立连接,可以自由地向任一方向发送数据。您可以在服务器和网站(客户端)之间设置Web套接字,这样无论何时将新内容插入MySQL数据库,服务器都会将新内容中继到客户端。与AJAX非常相似,您可以解释新信息并将其添加到页面中。使用Web套接字的好处是,当服务器收到信息时,信息会实时提供给您。这意味着您只需在首次加载站点时批量获取数据,并在发生更新时将更新推送给您。您不需要依赖计时器或手动输入来获取数据,因为您正在提供数据而不是获取数据。

例如,Facebook不依赖于计时器或您获取新数据(尽管如果刷新页面肯定会发生这种情况),但每个客户端都通过Web套接字收听服务器以获取新信息。

答案 1 :(得分:-1)

这就是所有javascript(或jquery)。您已经知道如何将数据发送到服务器。现在你需要做的就是用javascript修改html。 例如(jquery):

$("#submit").click(function(){
$("#comments").append("<div class=newcomment>"+$("#textbox").val()+"</div>");
$.POST('upload.php',{comments:$("#textbox").val()});
});

现在评论会发送到upload.php,评论会添加到您网页的评论部分。 如果您还需要包含来自服务器的数据,只需将一些javascript添加到upload.php文件并执行以下操作:$("#getdatefromserver").load('upload.php',{comments:$("#textbox").val()});现在,upload.php中的javascript将在页面中运行。

没有完成页面刷新。