【问题标题】:How can i refresh my website?如何刷新我的网站?
【发布时间】:2014-03-25 07:51:33
【问题描述】:

我在 c# 应用程序中每隔几分钟更新一个文本文件,其中包含不同的数据。

例如第一次在文本文件中出现:Hello world 一分钟后,文本文件包含:大家好

现在在 c# 应用程序中,我正在上传更改后的文本文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;

namespace ScrollLabelTest
{
    class FtpFileUploader
    {
        static string ftpurl = "ftp://ftp.test.com/files/theme/";
        static string filename = @"c:\temp\test.txt";
        static string ftpusername = "un";
        static string ftppassword = "ps";
        static string value;

        public static void test()
        {
            try
            {

                FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(
                ftpurl + "/" + Path.GetFileName(filename));
                request.Method = WebRequestMethods.Ftp.UploadFile;


                request.Credentials = new NetworkCredential(ftpusername, ftppassword);


                StreamReader sourceStream = new StreamReader(@"c:\temp\test.txt");
                byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                sourceStream.Close();
                request.ContentLength = fileContents.Length;

                Stream requestStream = request.GetRequestStream();
                requestStream.Write(fileContents, 0, fileContents.Length);
                requestStream.Close();

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

                response.Close();
            }
            catch(Exception err)
            {
                string t = err.ToString();
            }
        }
    }
}

我在硬盘上看到文本文件的内容已更改,并且在将文件上传到我的网站 ftp 后,我看到更新的文本文件。

现在在我的网站中,我使用 javascript/ajax 来读取上传的文本文件:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://newsxpressmedia.com/files/theme/jquery.newsTicker.js"></script>

<div id="oneliner">
    <div class="header"> Breaking News </div>
    <ul class="newsticker">
<script>
$(function() {
    var file = "http://newsxpressmedia.com/files/theme/test.txt";
    $.get(file, function (txt) {
        //var lines = txt.responseText.split("\n");
        var lines = txt.split("\n");
        $ul = $('<ul class="newsticker" />');
        for (var i = 0, len = lines.length; i < len; i++) {
            //save(lines[i]); // not sure what this does
            $ul.append('<li>' + lines[i] + '</li>');
        }
        //$ul.appendTo('body').newsTicker({
        $ul.appendTo('div.wcustomhtml').newsTicker({
            row_height: 48,
            max_rows: 2,
            speed: 6000,
            direction: 'up',
            duration: 1000,
            autostart: 1,
            pauseOnHover: 1
        });
    });
});
</script>
</ul>
</div>

问题是一旦我在 c# 中的应用程序更新了文件并将其上传到我在浏览器中需要的 ftp,例如 chrome 以进行手动刷新,如果没有,它将继续显示旧的文本文件内容而不是更新的内容。

如何在 javascript 中进行刷新?

【问题讨论】:

  • 您要自动刷新还是手动(用户点击刷新)?
  • 自动。例如,该站点将每分钟刷新一次。刷新或称之为更新。由于我每分钟都在更新文本文件,因此我希望网站也每分钟都读取更新的文件。它现在的方式一直显示旧文件内容。
  • 我看到的重复示例将刷新整个窗口。当我浏览我的网站时,它每 5 秒刷新一次浏览器窗口。我不想要它,而是刷新/更新 javascript 函数,这样它就会调用更新后的上传文本文件。我尝试了重复的示例以及在这两种情况下都没有读取新文件 ocntent 的答案。它只是每秒调用一次新闻函数并将文本文件的相同旧内容添加到新行。

标签: c# javascript jquery ajax web


【解决方案1】:

这样试试

无需刷新页面,只需刷新将从文本文件中获取最新信息的功能

$(function() {
    news();
    setInterval(function(){
      news()
    },60000)  // it will call every 1 min you can change it
});

function news(){
   $('body').find('.newsticker').remove();//It will clear old data if its present 
   var file = "http://newsxpressmedia.com/files/theme/test.txt";
    $.get(file, function (txt) {
        //var lines = txt.responseText.split("\n");
        var lines = txt.split("\n");
        $ul = $('<ul class="newsticker" />');
        for (var i = 0, len = lines.length; i < len; i++) {
            //save(lines[i]); // not sure what this does
            $ul.append('<li>' + lines[i] + '</li>'); //here 
        }
        //$ul.appendTo('body').newsTicker({
        $ul.appendTo('div.wcustomhtml').newsTicker({
            row_height: 48,
            max_rows: 2,
            speed: 6000,
            direction: 'up',
            duration: 1000,
            autostart: 1,
            pauseOnHover: 1
        });
    });
}

【讨论】:

  • 试过它的作用是每秒或更少地在文件内容中添加一个新行。
  • Sridhar 它正在进行更新,它确实显示了新的更新内容,但在上方的新 html 窗口中,我仍然看到旧内容也在向上滚动。每 60 秒它不会破坏旧的内容位置,只需添加一个新的滚动 jquery 。所以首先我看到了旧的内容,例如:你好。 60 秒后,我看到:变好了。两者都在滚动。我希望更新的内容将取代旧的。在您的解决方案中,它在旧文本下添加了更新的文本。
  • @DanielLip oh k,现在我清除旧数据并处理函数检查更新代码
  • 还是不行。现在它所做的是在新窗口中显示部分新更新的内容,它没有清除旧的内容,也没有覆盖它。而且在新内容附近,现在我看到带有“?”的钻石在新内容里面。那是我浏览我的网站的时候。
【解决方案2】:

如果你想通过 JavaScript 每分钟刷新一次页面,那么

setInterval(function () {
    //retrieve file from server and update html with new contents
}, 60000)

会成功的。但是,使用这种方法会每分钟重新加载文件,即使文件实际上没有被更改。

您可以查看 SignalR 以从服务器端触发一切。您要做的是创建一个集线器,一旦上传了新版本的文件,它将向所有订阅的客户(其中一个将是您的网站)发送通知。这将确保页面仅在文件实际更改时才更新。

您可以阅读有关 SignalR here 的更多信息。

【讨论】:

    【解决方案3】:

    只需使用 asp:timer 控件并将您的内容放入 UpdatePanel 中即可。

    您还可以查看计时器示例并根据您的时间要求设置时间。

    http://msdn.microsoft.com/en-us/library/bb398865(v=vs.100).aspx

    【讨论】:

      【解决方案4】:

      使用javascript:

      setTimeout(function() {
          location.reload();
      }, 300000);
      

      【讨论】:

        猜你喜欢
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        相关资源
        最近更新 更多