Javascript 随机显示的文本

Javascript 随机显示的文本,javascript,php,jquery,sql,ajax,Javascript,Php,Jquery,Sql,Ajax,我正在为一个游戏网站制作天气发生器。我在互联网上搜索了好几个小时,试图找到最好的方法来做我想做的事,但我似乎找不到什么东西能给我一切。我研究过Jquery、AJAX、Javascripts、PHP、html的混合、显示随机div容器、SQL,我研究过很多 我想做的是:我有一套基于文本的天气描述,我想每24小时随机更改一次。这里有一个陷阱:它必须在任何时候为每个人展示相同的东西 有人能给我指出正确的方向吗?我的方法是使用一些稳定的数学知识,将当前日期转换为索引,并将其转换为描述集。它不会真正是随机

我正在为一个游戏网站制作天气发生器。我在互联网上搜索了好几个小时,试图找到最好的方法来做我想做的事,但我似乎找不到什么东西能给我一切。我研究过Jquery、AJAX、Javascripts、PHP、html的混合、显示随机div容器、SQL,我研究过很多

我想做的是:我有一套基于文本的天气描述,我想每24小时随机更改一次。这里有一个陷阱:它必须在任何时候为每个人展示相同的东西


有人能给我指出正确的方向吗?

我的方法是使用一些稳定的数学知识,将当前日期转换为索引,并将其转换为描述集。它不会真正是随机的——事实上,它将是完全确定的——但它显然对除你之外的任何人都是随机的

例如:

var today = new Date();
var weatherIndex = (today.getDate() * today.getMonth() * today.getYear()) % weatherListSize;
例如javascript,但实际上您希望在服务器上执行此操作-否则,您可能会在任何给定时刻为不同时区的用户获得不同的结果,而且,您真的不希望每次都发送所有天气文本-只是今天

你提到你已经在使用MySQL了。SQL示例大致如下:

    select text from WeatherTexts
    where ID = 1 + MOD(
        (EXTRACT(DAY FROM CURDATE()) 
        * EXTRACT(MONTH FROM CURDATE()) 
        * EXTRACT(YEAR FROM CURDATE())),
    (select MAX(ID) from WeatherTexts));
假设顺序ID。因为CURDATE一整天都保持不变,所以在给定的一天内,每个用户每次执行该查询时,该查询将返回完全相同的结果。当它在第二天运行时,结果几乎总是不同的


在PHP中包含查询,以便在每次加载页面时都运行该查询。然后向页面添加一些类似于中所述的javascript,以确保页面在午夜后重新加载以获取新内容。记住在计时器中使用服务器时区!如果你希望人们打开页面的时间超过24小时,记得在前一个24小时计时器过期时启动一个新的24小时计时器。

我这样做的方法是使用一些ajax,服务器端语言php可以工作

您可以使用ajax和javascript点击服务器,让服务器告诉客户端要绘制什么。拥有这种逻辑服务器端将确保每个人都能看到相同的东西

然后,为了让所有客户机保持更新,我会通过setTimeout将ajax调用设置为超时时间,这基本上会每隔10秒重新询问服务器是否应该更改显示的内容

在这里使用jquery时,javascript看起来像这样

<script>
    function getDataFromServer() {
        var options = {
            type: "GET", //make a GET http request
            url: "/myServerSidePHPPage", // to the server at this location
            dataType: "json" //make your php page return json
        };
        $.ajax(options).then(function (data) {
            //data will be the json that your php page returns
            //use this data to update your page

            //pretending you have a <div id='weather'> somewhere on your page
            //and also assuming you returned json with a weatherDescription property
            //you could load the text or html into that div like::
            $('#weather').html(data.weatherDescription);
        });
    }

    //this is the jquery onDocumentReady function, it fires when the page loads
    $(function() {
        //tell the page to call the getDataFromServer function every 
        //10 * 1000 milliseconds (10 seconds)
        window.setTimeout(getDataFromServer, 10 * 1000); 
    });
</script>
我不知道php能帮你解决这个问题,但希望这能让你开始,一旦你遇到更具体的问题,你可以问一些关于这些问题的问题


至于外观上的随机性,你可以用几种方法来实现。想到的一个简单方法是生成一个随机的“天气”,并将其存储为一个文本文件,其中包含生成时间。您的php操作可以读取此文本文件以向客户端提供随机天气,还可以读取生成该文件的时间以查看是否已过24小时。如果24小时过去,将生成一个新的随机天气。您也可以将这些值存储在服务器上的内存中

您是否试图让页面本身也更新,即使用户在git中查看页面时也不刷新?我希望它可以做两件事,我希望它对每个人都保持不变,直到24小时切换时间结束,并且它将在用户不刷新的情况下更改。我们的手机用户一次登录12小时,因此如果他们不刷新,我希望它自己更新。为什么不将生成的描述存储在数据库/文本文件中,然后每24小时重新生成一次?JW-这是我最初使用它的地方。我试图使用rantex方法,但当我意识到每次有人刷新页面时,它都会刷新显示的文本时,我停止了。所以我有一个文本文件,里面有我所有的20行天气描述。到目前为止,我在代码方面处于中级,我不知道如何告诉服务器/网站不要重新生成,除非24小时过去。我还需要指出,它只关注服务器时钟,而不是用户。我会警告说,我对代码有中级经验,这对我来说是一个新领域,但我学习速度很快,渴望解决这个问题。这就是我试图实现的其他解决方案中不同用户时区的问题。用你的例子,假设我有20个天气描述,我想循环浏览,我如何列出它们,以便在适当的时候过滤?它们应该包含在div中吗?我应该把它们放到SQL数据库中并以这种方式显示吗?你网站的其余部分是基于什么技术构建的?我认为在任何服务器端框架PHP、node.js等中使用上述方法都是很容易的。这仍然会导致午夜刷新,但这确实是浏览器端javascript的问题。我主要是用PHP构建的。这绝对是最简单的列表方式
将它们硬编码到PHP中的数组中。那不是最好的方法,但它能把工作做完。如果您已经在使用SQL进行其他操作,那么让SQL表充满它们并从中选择一行会更好。如果你是,什么口味?MySQL?是的,我正在使用我的SQL和PHPmyadmin来管理我的登录/注册信息。在我看来,有几种方法可以使用jquery。你建议下载并上传它,还是只使用google方法?我会使用像google这样的CDN。我看到了你的更新,是的,这是我最初使用它的地方。当我意识到我的操作方式会在每次用户重新加载页面时刷新页面时,我陷入了困境。不好的。我在这个文本文件中有大约20行天气描述,你有没有一个小例子来说明我将如何显示随机天气编辑:我遵循的是rantex php方法。这个文本文件将在你的服务器上,服务器负责向客户端提供1个天气描述。我是一个ASP的家伙,不知道php语法,所以我不能帮你的那部分。但是,一旦您将JSON天气描述发送给客户端,您就会像ajax中显示的那样显示它。然后函数感谢Kyle的建议,我真的希望我能更好地理解ajax——在尝试使用此功能之前,我从未考虑过使用它。我将以你为例,试着更好地理解你给我的建议。我理解你的基本想法,它是插入到现实世界的解决方案,我需要消化。