使用javascript存储非常少量的数据

时间:2013-02-15 20:01:03

标签: javascript string

我有一个网站基本上会对网址提出的问题做出是或否答复。一个例子是http://isnatesilverawitch.com

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

有没有办法写一个文件而不会有太多麻烦,或者可能是一个旨在检索和更改我可以用来为这样一个网站供电的单个字符串的Web服务?我知道这是一个奇怪的问题,但我办公室里的人肯定会得到一些启发。我甚至考虑建立一个移动应用程序来动态操作答案。

附加: 要清楚我只想更改单个字符串的值,但我不能只使用随机答案。没有具体的,可以把它想象成一个网站,说明医生是IN还是OUT,但我不希望它随机吐出一个答案,当他出门时,当他进入IN和OUT时需要说IN。我将手动更改此值,但我希望简化过程并在移动设备上执行此操作。我无法通过手机真正编辑源代码(也不是我想要的)。

4 个答案:

答案 0 :(得分:2)

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

var string = "loading;"
$.get('filename.txt',function(result){
    string = result;
    // use string
})

答案 1 :(得分:1)

两个想法:

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

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

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

要动态更改值,您需要另一个服务器端脚本将值写入某种数据存储(在本例中为您的文本文件)。我不确定您的Web服务器上有server-side scripting(例如PHP,Perl,ASP,Python)运行时,但我可以帮助您使用PHP代码,您可以通过指向{来更改值{1}}在浏览器中。 PHP脚本只需将http://yoursite.com/changeValue.php?Probably写入文本文件即可。

答案 2 :(得分:1)

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

function init() {
  Tabletop.init( { url: your_public_spreadshseet_url,
  callback: function (data) {
    console.log(data);
  },
  simpleSheet: true } )
}

答案 3 :(得分:0)

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

更改页面HTML

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

wordlist.js

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

的index.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调用的性能。除非有人感兴趣,否则我不会在此更多地介绍此功能。