更新页面上的数据而不刷新

pobjuy32  于 2021-06-18  发布在  Mysql
关注(0)|答案(4)|浏览(524)

我有一个网站,我需要更新状态。就像飞行一样,你要出发、巡航或着陆。我想能够刷新状态,而不必让我的观众有和重新加载整个页面。我知道有一种方法可以用ajax和jquery来实现,但是我不知道它是如何工作的。我也不希望他们有和点击按钮。如果有人知道该怎么做,我非常感激!

vlju58qv

vlju58qv1#

一般来说,如果你不知道某件事是如何运作的,那就找一个你可以从中学习的例子。
对于这个问题,考虑这个演示
您可以看到,使用jquery很容易完成用ajax加载内容:

  1. $(function(){
  2. // don't cache ajax or content won't be fresh
  3. $.ajaxSetup ({
  4. cache: false
  5. });
  6. var ajax_load = "<img src='http://automobiles.honda.com/images/current-offers/small-loading.gif' alt='loading...' />";
  7. // load() functions
  8. var loadUrl = "http://fiddle.jshell.net/deborah/pkmvD/show/";
  9. $("#loadbasic").click(function(){
  10. $("#result").html(ajax_load).load(loadUrl);
  11. });
  12. // end
  13. });

试着理解它是如何工作的,然后试着复制它。祝你好运。
你可以在这里找到相应的教程

更新

现在,下面的事件启动ajax load 功能:

  1. $("#loadbasic").click(function(){
  2. $("#result").html(ajax_load).load(loadUrl);
  3. });

您还可以定期这样做:如何定期激发ajax请求?

  1. (function worker() {
  2. $.ajax({
  3. url: 'ajax/test.html',
  4. success: function(data) {
  5. $('.result').html(data);
  6. },
  7. complete: function() {
  8. // Schedule the next request when the current one's complete
  9. setTimeout(worker, 5000);
  10. }
  11. });
  12. })();

我在这里为您演示了这个实现。在这个演示中,每2秒( setTimeout(worker, 2000); )内容已更新。
您也可以立即加载数据:

  1. $("#result").html(ajax_load).load(loadUrl);

有相应的演示。

展开查看全部
oo7oh9g9

oo7oh9g92#

您可以从jquery官方网站上了解jquery ajax:https://api.jquery.com/jquery.ajax/
如果你不想使用任何点击事件,那么你可以设置定时定期更新。
下面的代码可能会帮助您只是一个例子。

  1. function update() {
  2. $.get("response.php", function(data) {
  3. $("#some_div").html(data);
  4. window.setTimeout(update, 10000);
  5. });
  6. }

上述函数每10秒调用一次,从response.php获取内容并在中更新 #some_div .

hkmswyz6

hkmswyz63#

假设您希望在网页上显示一些实时提要内容(比如livefeed.txt),而不进行任何页面刷新,那么下面的简化示例就是为您准备的。
在下面的html文件中,id“livedata”的div元素上的实时数据将得到更新
索引.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Live Update</title>
  5. <meta charset="UTF-8">
  6. <script type="text/javascript" src="autoUpdate.js"></script>
  7. </head>
  8. <div id="liveData">
  9. <p>Loading Data...</p>
  10. </div>
  11. </body>
  12. </html>

下面autoupdate.js使用xmlhttprequest对象读取实时数据,并每隔1秒更新一次htmldiv元素。为了更好地理解代码的大部分内容,我已经给出了注解。
自动更新.js

  1. window.addEventListener('load', function()
  2. {
  3. var xhr = null;
  4. getXmlHttpRequestObject = function()
  5. {
  6. if(!xhr)
  7. {
  8. // Create a new XMLHttpRequest object
  9. xhr = new XMLHttpRequest();
  10. }
  11. return xhr;
  12. };
  13. updateLiveData = function()
  14. {
  15. var now = new Date();
  16. // Date string is appended as a query with live data
  17. // for not to use the cached version
  18. var url = 'livefeed.txt?' + now.getTime();
  19. xhr = getXmlHttpRequestObject();
  20. xhr.onreadystatechange = evenHandler;
  21. // asynchronous requests
  22. xhr.open("GET", url, true);
  23. // Send the request over the network
  24. xhr.send(null);
  25. };
  26. updateLiveData();
  27. function evenHandler()
  28. {
  29. // Check response is ready or not
  30. if(xhr.readyState == 4 && xhr.status == 200)
  31. {
  32. dataDiv = document.getElementById('liveData');
  33. // Set current data text
  34. dataDiv.innerHTML = xhr.responseText;
  35. // Update the live data every 1 sec
  36. setTimeout(updateLiveData(), 1000);
  37. }
  38. }
  39. });

出于测试目的:只需在livefeed.txt中编写一些东西-您将在index.html中得到相同的更新,而无需任何刷新。
livefeed.txt文件

  1. Hello
  2. World
  3. blah..
  4. blah..

注意:您需要在web服务器上运行上述代码(例如:http://localhost:1234/index.html)不作为客户端html文件(例如:file:///c:/index.html)。

展开查看全部
lhcgjxsq

lhcgjxsq4#

我想你会想学的 ajax 首先,试试这个:ajax教程
如果您想知道ajax是如何工作的,那么直接使用jquery并不是一种好方法。我支持学习本机方式向服务器发送ajax请求,请看一些关于 XMLHttpRequest :

  1. var xhr = new XMLHttpReuqest();
  2. xhr.open("GET", "http://some.com");
  3. xhr.onreadystatechange = handler; // do something here...
  4. xhr.send();

相关问题