我的问题本质上是,我试图制作一个通用的Ajax函数,仅用于检索将被解析的信息,然后自动将其存储为任何所谓的信息的值。在这种特定情况下,这是我正在制作的hang子手游戏的巨大词典单词列表。如何将ajaxRequest.responseText.split("\n")
创建的数组转义为任何调用它的数组。就我而言,它将是ALAMI.Hangman.Wordlist
我的最终目标是能够使用ALAMI.Hangman.Wordlist[i]
并使它返回存储在Array中该位置的任何字符串的值。
在您弄怪这不是我的全部代码之前,将通过ALAMI.XHR();
调用XHR请求函数,如下所示,但是我没有在代码中包括它,因为我觉得这是不必要的。
ALAMI.XHR.Get = function(URL){
"use strict";
var ajaxRequest = ALAMI.XHR();
var ajaxResponse;
ajaxRequest.open("GET", URL, true);
ajaxRequest.send(null);
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState === 4){
ajaxResponse = ajaxRequest.responseText.split("\n");
var extensionLocation = URL.lastIndexOf('.');
console.log(URL.substr(extensionLocation) + " file ...... " + ajaxResponse.length + " lines.");
}
}
return ajaxResponse;
}
ALAMI.Hangman = ALAMI.Hangman || {};
ALAMI.Hangman.Wordlist = ALAMI.XHR.Get('fulldictionary.txt');
//I want ALAMI.Hangman.Wordlist to be equal to the Array of ajaxRequest.responseText.split("\n")
我的最终目标是能够使用
ALAMI.Hangman.Wordlist[i]
并使它返回存储在Array中该位置的任何字符串的值。另外,我正在尝试使我的ajax函数成为一种通用方法,可以使用无数次。例如:
ALAMI.Hangman.Wordlist1 = ALAMI.XHR.Get('fulldictionary.txt');
ALAMI.Hangman.Wordlist2 = ALAMI.XHR.Get('dictionary2.txt');
最终目标是:
如果在全局空间中我写
console.log(ALAMI.Hangman.Wordlist[0]);
,它当前显示为未定义,但是,我想要的是将数组存储在ALAMI.Hangman.Wordlist
中,这样当我这样做时它将输出数组的第一个值。console.log(ALAMI.Hangman.Wordlist[0]); //Should output Apple
最佳答案
[根据评论编辑]
如果要从XHR请求的结果填充ALAMI.Hangman.Wordlist
,则应在该请求的回调中执行此操作
ALAMI.Hangman = ALAMI.Hangman || {};
//change ALAMI.XHR.Get = function(URL) to
// ALAMI.XHR.Get = function(URL,listID)
ALAMI.XHR.Get('fulldictionary.txt','WordList');
ALAMI.XHR.Get('fulldictionary2.txt','WordList2');
ALAMI.XHR.Get('fulldictionary3.txt','WordList3');
// [...]
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState === 4){
ajaxResponse = ajaxRequest.responseText.split("\n");
var extensionLocation = URL.lastIndexOf('.');
ALAMI.Hangman[listID] = ajaxResponse; // <===
// [...]
// do stuff with the populated ALAMI.Hangman[listID]
}
}