【问题标题】:AJAX JSON response is returning the correct values, but also undefined values in between?AJAX JSON 响应返回正确的值,但也返回未定义的值?
【发布时间】:2019-08-01 22:18:22
【问题描述】:

我正在编写一些 JavaScript 代码,该代码将在指定的数字范围内找到最小的未使用数字。 AJAX 请求收集指定范围内所有使用的数字,但另外返回正确值之间的未定义值?我已经将 JSON 响应的返回值与 SQL 表中的当前值进行了比较,所有正确的值都在 JSON 响应和 SQL 表中,所以我不确定未定义值的来源。

https://imgur.com/a/rXLfEJk

JavaScript:

//Specified range of numbers to search.
var startRange = 40000;
var endRange = 49999;

//UPC's are padded with to 13 digits with 0's then sent as parameters.
var startUPC = '00000000' + startRange;
var endUPC = '00000000' + endRange;

// AJAX call to web API that gathers all UPC's within a range.
$.ajax({
    url: "api/GetNewPLU",
    type: "GET",
    dataType: "json",
    data: { 'startUPC': startUPC, 'endUPC': endUPC },
    success: function (data) {
        $.each(data.data, function (i, UPCs) {
            for (var i in UPCs) {
                console.log("UPC: " + UPCs[i].F01);
            }
        })
    },
    error: function (error) {
        console.log(`Error ${error}`)
    }
})

JSON 响应:

{
    "draw": null,
    "data": [{
        "DT_RowId": "row_0000000040002",
        "OBJ_TAB": {
            "F01": "0000000040002"
        }
    }, {
        "DT_RowId": "row_0000000040008",
        "OBJ_TAB": {
            "F01": "0000000040008"
        }
    }, {
        "DT_RowId": "row_0000000040013",
        "OBJ_TAB": {
            "F01": "0000000040013"
        }
    }, {
        "DT_RowId": "row_0000000040017",
        "OBJ_TAB": {
            "F01": "0000000040017"
        }
    }
}

我计划遍历 AJAX 请求中使用的数字,将它们与按顺序递增的生成数字进行比较,直到没有匹配项,然后保存未使用的数字。我不确定是否值得弄清楚为什么我同时返回值和未定义,或者我是否应该找到一种方法来过滤掉未定义。

【问题讨论】:

  • 您的数据数组包含一个键:值对,然后是一个键:键:值对。所以第二个项目有另一个维度。 “UPC”的第一个变量是“row_00...40002”,但您的控制台正在尝试查找“row_00...40002”.F01。如果您只需要第二个值,则不需要 UPC 循环中的 var i 。只需获取“UPCs.F01”。
  • 它正在工作——谢谢!

标签: javascript asp.net ajax


【解决方案1】:

lodash _.difference 可以帮到你。
创建两个数组。一种用于生成的值,一种用于使用的值。并找出它们之间的差异。

var created = ["0000000040000", "0000000040001", "0000000040002"];
var used = ["0000000040001", "0000000040002"];
var unused = _.difference(created, used);

【讨论】:

  • 感谢您的提示!事实证明这很有帮助。
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 2014-12-18
  • 1970-01-01
  • 2020-12-07
  • 2017-08-10
  • 1970-01-01
相关资源
最近更新 更多