使用Javascript迭代JSON数据
我正在做一个项目,我有一系列的密码,只能使用预定义的次数。现在,我有两个JS函数进行验证,还有一个外部JSON文件包含要验证的数据。我的JS函数目前只能验证一个可能的密码。不知道如何通过扩展这些函数来迭代完整的JSON文件。欣赏任何方向 谢谢使用Javascript迭代JSON数据,javascript,json,Javascript,Json,我正在做一个项目,我有一系列的密码,只能使用预定义的次数。现在,我有两个JS函数进行验证,还有一个外部JSON文件包含要验证的数据。我的JS函数目前只能验证一个可能的密码。不知道如何通过扩展这些函数来迭代完整的JSON文件。欣赏任何方向 谢谢 function validateCode() { var txtCode = document.getElementById("INPUT_PASSCODE"); var results =
function validateCode() {
var txtCode = document.getElementById("INPUT_PASSCODE");
var results = txtCode.value.trim() != "" ? getRemainingCode(txtCode.value) : -1;
if (results == 0) {
alert('This code is no longer elegible');
txtCode.value = '';
txtCode.focus();
return false;
}
else if (txtCode.value.trim() != "" && results == -1) {
alert('Invalid code used');
txtCode.value = '';
txtCode.focus();
return false;
}
return true;
}
function getRemainingCode(code) {
var count = -1; //Not a valid code
jQuery.ajax({
url: '../codeCheck.aspx?Code=' + code + '&formhash=dfsgdfg',
dataType: 'json',
success: function (result) {
count = result.REMAINING;
if (isNaN(count))
count = -1;
},
async: false
});
return count;
}
JSON数据
{
"Passcode_1":{
"ID":"sdfg3456",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_2":{
"ID":"jkhl765",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_3":{
"ID":"cvbn435",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_4":{
"ID":"345fgh",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_5":{
"ID":"5hrdd54",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
}
}
目前,您正在错误地访问JSON对象。在成功回调中执行以下操作:
for(var i in result)
{
var count = result[i].REMAINING;
}
要访问对象,需要通过for in循环对其进行循环
for(var i in result)
{
var count = result[i].REMAINING;
}
我对你的问题有一个看法: 您应该有一个
数组,而不是json
。这将是有意义的,因为密码
\ucode>n
不会给您的代码库添加任何值
下面是我根据这一观察得出的结论:
您的阵列位于此处:
[
"Passcode_1":{
"ID":"sdfg3456",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_2":{
"ID":"jkhl765",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_3":{
"ID":"cvbn435",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_4":{
"ID":"345fgh",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
},
"Passcode_5":{
"ID":"5hrdd54",
"USED":"0",
"REMAINING":"1",
"TIMESTAMP":"4/30/2014 3:16:53 PM"
}
]
下面是迭代它的方法:
(function(passcode){
$.each(passcode_array, function(index, value){
//validate passcode in function
if(is_passcode_matched_and_valid(passcode, value)){
//do things
}
});
})(passcode);
你的问题是什么?您有什么问题?基本上,代码的结构方式,如何检查JSON中每个潜在密码部分的剩余部分。换句话说,用户可以提交该列表中的任何密码,如果使用,我需要减少每个密码部分的剩余数量。不要使用
async:false
,并阅读->您将json视为数据库?您应该使用实际的数据库。。。因为是的,每次你想查找某个东西时,你都必须迭代文件的大块。对于这样的东西,DB看起来不是有点过分了吗?只有5个可能的选项。是的,没关系,我刚刚更改了这篇文章的JSON。