Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript迭代JSON数据_Javascript_Json - Fatal编程技术网

使用Javascript迭代JSON数据

使用Javascript迭代JSON数据,javascript,json,Javascript,Json,我正在做一个项目,我有一系列的密码,只能使用预定义的次数。现在,我有两个JS函数进行验证,还有一个外部JSON文件包含要验证的数据。我的JS函数目前只能验证一个可能的密码。不知道如何通过扩展这些函数来迭代完整的JSON文件。欣赏任何方向 谢谢 function validateCode() { var txtCode = document.getElementById("INPUT_PASSCODE"); var results =

我正在做一个项目,我有一系列的密码,只能使用预定义的次数。现在,我有两个JS函数进行验证,还有一个外部JSON文件包含要验证的数据。我的JS函数目前只能验证一个可能的密码。不知道如何通过扩展这些函数来迭代完整的JSON文件。欣赏任何方向

谢谢

    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。