根据变量“数字”选择一行 然后将该行中的每个单词保存到每个javascript变量1和javascript变量2中。
如果变量号等于2,则选择第2行,将Variables1设置为Potato,将Variables2设置为Tomato。
//Text file on server
Apple, Oranges
Potato, Tomato
Cake, Muffin
Cheese, Milk
//Java script code in browser.
var number = Math.floor((Math.random() * 4) + 1);
var xhr = new XMLHttpRequest();
xhr.open("GET","http://..........data.txt",false);
xhr.send(null);
下一步我该怎么做?
感谢任何帮助 预先感谢
答案 0 :(得分:0)
您最好通过后端服务器而不是js选择随机字符串,因为服务器可以做到这一点。您可以创建一个页面,将其引用到该页面并将文件的路径作为参数传递,并将其设置为从该文件返回随机行。解析该字符串后,可以在已解析的字符串上使用split()
以获得这些单词的数组。另外,您应该考虑使用fetch
,因为它可以代替XHR
。
所以我的js
代码看起来像这样:
function getTextFile(path){
var line = Math.floor(Math.random() * 4);
params = {
path: path,
line: line
}
var data = new FormData();
data.append("json", JSON.stringify(params));
var promise = fetch("http://mysite/myscript.php", {method: 'POST', body: data})
.then((response) => {
return response.text();
}).then((text) => {
if(text != 'error'){
text = text.replace(/(\r\n|\n|\r)/gm, "");
var result = text.split(" ");
//Result will be an array of those values and will look something like that:
//["Cheese", "Milk", "Yogurt"]
}
else{
alert('error');
}
});
}
然后在后端看起来像这样:
$json = (array) json_decode($_POST['json']);
if( validatePath($json['path']) ){
$file = file($json['path']);
$my_string = $file[$json['line']];
echo $my_string;
}
else{
echo 'error';
}
function validatePath($path){
//You should definitely use some other validations
$allowedExtensions = ['txt', 'json'];
$pathinfo = pathinfo($path);
//Right now it's only checking for right extension and
//that's this file ain't located in admin subdir
if(strstr($pathino['dirname'], '/admin') || !in_array($pathinfo['extension'], $allowedExtensions)){
return false;
}
else{
//Check if file exists
if( file_exists($path) ){
return true;
}
else{
return false;
}
}
}
尽管不是所有的浏览器都支持fetch
,但是如果您想支持更多的浏览器,则需要polyfill。