0

我有一个网站,基本上可以对 url 提出的问题给出“是”或“否”的答复。一个例子是http://isnatesilverawitch.com

我的网站更像是一个笑话,答案经常变化。我希望能够做的是存储一个简短的一两个单词字符串,并且能够在不编辑我网站上的源代码的情况下更改它,如果这可能只使用 javascript。我不想为了保存一个字符串而建立一个完整的数据库。

有没有办法在没有太多麻烦的情况下写入文件,或者可能有一个 Web 服务旨在检索和更改我可以用来为这样的网站提供动力的单个字符串?我知道这是一个奇怪的问题,但我办公室的人肯定会从中受益。我什至正在考虑构建一个移动应用程序来即时操纵答案。

附加:要清楚我只想更改单个字符串的值,但我不能只使用随机答案。没有具体说明,可以将其视为一个说明医生是进还是出的网站,但我不希望它吐出一个随机的答案,它需要在他进时说 IN,在他外出时说 OUT。我将手动更改这个值,但我想让这个过程变得简单,并且我可以在移动设备上做一些事情。我不能真正从手机编辑源代码(我也不想)。

4

4 回答 4

2

如果我理解正确,您需要一个简单的文本文件,您可以在其中更改一个简单的字符串值并将其显示在您网站的某个位置。

var string = "loading;"
$.get('filename.txt',function(result){
    string = result;
    // use string
})
于 2013-02-15T20:09:38.457 回答
1

给你两个想法:

1)使用JavaScript,随机生成值(或者可能基于时间表,您可以提前硬编码一次,脚本会随着时间的推移处理更改)。

2) 使用 Javascript 和服务器端脚本,您可以即时更改值。

使用 JavaScript 向包含该值的文本文件发出 AJAX 请求。Shanimal 的回答为您提供了实现这一目标的代码。

要即时更改值,您需要另一个服务器端脚本,该脚本将值写入某种数据存储(在本例中为您的文本文件)。我不确定您的 Web 服务器上有哪些服务器端脚本http://yoursite.com/changeValue.php?Probably(例如 PHP、Perl、ASP、Python)运行时,但我可以帮助您解决 PHP 代码,您可以通过指向浏览器。PHP 脚本将简单地写入Probably文本文件。

于 2013-02-15T20:16:56.947 回答
1

由于您不想拥有服务器端代码或数据库,因此一种选择是让 javascript 从 Google 电子表格中检索值。Tabletop ( http://builtbybalance.com/Tabletop/ ) 是一个旨在让您执行此操作的库。您只需制作一个公开的 Google 电子表格并启用“发布到网络”,它会为您提供一个公开的 URL。以下是您将在您的网站上使用的代码的简化版本:

function init() {
  Tabletop.init( { url: your_public_spreadshseet_url,
  callback: function (data) {
    console.log(data);
  },
  simpleSheet: true } )
}
于 2013-02-15T20:21:03.530 回答
0

虽然 javascript 解决方案是可能的,但不鼓励。PHP 旨在执行诸如随机更改站点之类的操作。假设您知道这一点,我将跳转到 javascript 解决方案。
因为您想将单词变体存储在文本文件中,您需要使用 AJAX 下载此文件或.js使用数组或字符串将其存储在文件中。
然后你会想要改变的话。使用 AJAX 可以在页面加载时更改单词(因此它们可以但不必在查看者眼前更改)。

更改页面 HTML

可能的更改方式(单词在数组中):

wordlist.js

var status = "IN";   //Edit IN to OUT whenever you want

索引.html

<script src="wordlist.js"></script>
<div>Doctor is <span id="changing">IN</span></div>
<script>
   function changeWord(s) {   //Change to anything

       document.getElementById("changing").innerHTML = s;

   }
   changeWord(status);  //Get the status defined in wordlist.js
</script>

从服务器重新加载

如果您想动态更改答案并在所有打开的页面上显示更改效果,则需要 AJAX 或者您必须让浏览器重新加载单词列表,如下所示:

重新加载脚本

function reloadWords() {
    var script = document.createElement("script");  //Create <script>
    script.type="text/javascript";
    script.src = "wordlist.js";                   //Set the path
    script.onload = function() {changeWord(status)};    //Change answer after loading
    document.getElementsByTagName("head")[0].appendChild(script);  //Append to <head> so it loads as script. Can be appended anywhere, but I like to use <head>
}

使用 AJAX

这里我们假设使用文本文件。我猜最简单的解决方案。使用 AJAX,它看起来很像这样:

http = ActiveXObject==null?(new XMLHttpRequest()):(new ActiveXObject("Microsoft.XMLHTTP"));
http.onloadend = function() {
     document.getElementById("changing").innerHTML = this.responseText;  //Set the new response, "IN" or "OUT"
}
http.open("GET", "words.txt")
http.send();

使用长轮询可以提高 AJAX 调用的性能。除非有人感兴趣,否则我不会在这里更多地介绍这个功能。

于 2013-02-15T20:14:22.180 回答