SOLUTION:
此問題源於您通過AJAX請求訪問文本內容而不是JSON對象。最終成爲你的屬性名稱的詞正在變成字符串(不像JSON,它們將是屬性標識符)。由於您使用的是字符串名稱,因此您必須使用Object.keys()
來訪問這些屬性名稱。
以下代碼演示了具有標識符屬性的對象與對象之間的差異,它更像是具有字符串名稱的字典以及如何訪問字典與傳統對象。
SpellCheck.txt:
ABCD
ABG
ABI
ABO
AC
ACE
ACEI
ACER
ACL
ADAM
ADHD
ADL
ADPKD
ADS
AENNS
AFB
AFI
AFO
AFP
您的代碼:
var TextFile = {};
jQuery.get('SpellCheck.txt', function (data) {
var values = data.split('\n');
for (var i = 0; i < values.length; i++) {
var val = values[i];
TextFile[val] = 'true';
}
});
我的測試(置於其內的AJAX成功回調以上):
// Test of traditional JS object with properties that are not strings:
var myObj = { prop1: 1, prop2: 2 }
console.log(myObj);
// Test of your dictionary object and how you must use Object.keys()
// to access dictionary elements:
console.log(TextFile);
console.log("Name of first key in dictionary is: " + Object.keys(TextFile)[0]);
console.log("Value of first key in dictionary is: " + TextFile[Object.keys(TextFile)[0]]);
這裏你可以看到在控制檯的JS引擎如何看待這兩個對象的區別:
![enter image description here](https://i.stack.imgur.com/nyNeC.png)
通知你的對象屬性名稱是如何報價,但MyObj中的名字都沒有?
爲了得到你所希望看到的結果,呼籲一個JSON對象:
SpellCheck2.txt:
{
"ABCD" : "",
"ABG" : "",
"ABI" : "",
"ABO" : "",
"AC" : "",
"ACE" : "",
"ACEI" : "",
"ACER" : "",
"ACL" : "",
"ADAM" : "",
"ADHD" : "",
"ADL" : "",
"ADPKD" : "",
"ADS" : "",
"AENNS" : "",
"AFB" : "",
"AFI" : "",
"AFO" : "",
"AFP" : ""
}
指數。 html:
var result = "";
jQuery.get('SpellCheck2.txt', function (data) {
result = JSON.parse(data);
for (var prop in result) {
result[prop] = 'true';
}
console.log("Value of result[\"ABCD\"] is: " + result["ABCD"]);
});
結果:結果[ 「ABCD」]的值爲:真
你在哪裏使用'TEXTFILE [ 'ABCD']'?在成功callBack裏面?或外面呢? Jquery.get是異步的。 –
如果我沒有弄錯,值[0]是整行(或字符串) - 「ABCD」:「true」 – Jordan
除了@RajaprabhuAravindasamy提到的,jquery.get也是一個HTTP Get調用。我假設你沒有使用它從本地系統獲取文件。我可能是非常錯誤的,但想澄清這一點。謝謝。 – Sid