【问题标题】:How can I work with in JavaScript a single HTML input field as an array?如何在 JavaScript 中将单个 HTML 输入字段用作数组?
【发布时间】:2021-11-01 04:02:33
【问题描述】:

经过数小时的搜索和测试,我终于决定发布一个问题。

我需要能够制作这样的东西才能使用函数。

var myCSV = [1,3,5,6];

目前,我可以从数据库中获取 CSV,因为它是这样存储的,myColumn = 1,3,5,6。我可以让它作为 AJAX 成功响应传递,但它似乎想要添加引号。然后,我尝试将 JSON 编码添加到我的 PHP 方面,并将 JSON Parse 添加到成功调用,但仍然无法使该函数正常工作。最终目标是根据 csv 值选择复选框。

这行得通

var FilterArray =  [1,3,5,6]; // Manually added these numbers as is for testing
$('#myForm').find('.checks').each(function () {
   $(this).prop("checked", ($.inArray(parseInt($(this).val()), FilterArray ) != -1));
});

在尝试让我的 AJAX 成功响应在 FilterArray 中工作之后,我决定将它传递给一个输入值并使用它。但是,当我将它传递给函数时,无法弄清楚如何不将其视为字符串。这是我尝试过的。

在我的 getCSV.php 中最后有这个

json_encode($foundCSV);

在我的 AJAX 成功

var FilterArray = JSON.parse(response);

我也尝试过不使用 json_encode 并将其发送到不添加引号的输入值。

总而言之,我如何获取 csv,例如1,3,5,6 存储值并将其传递给如上所示工作的函数?

【问题讨论】:

    标签: javascript php html arrays ajax


    【解决方案1】:

    假设您将字符串放在一个名为 response 的变量中,其值为“1,3,5,6”,您可以使用以下方法将其转换为整数数组:

    response.split(',').map(e => parseInt(e))
    

    然后您可以将结果传递给您的函数。 坚持你的命名,代码应该是这样的:

    var FilterArray = response.split(',').map(e => parseInt(e));
    

    代码的作用:

    • 获取响应并使用逗号字符作为分隔符将其拆分
    • 这将创建一个字符串数组
    • 对于该数组中的每个字符串,尝试将其解析为整数(我猜是 ID?)

    【讨论】:

    • 做到了!我一直在玩 split 和 map 但错过了 e => 部分,因为它只会抓住第一个数字。谢谢!
    【解决方案2】:

    澄清问题:在对它进行 json 编码之前,您的 $foundCSV 在 PHP 端是什么样的?它是数组还是带有逗号分隔数字的字符串?您可能希望使用您的开发人员工具/调试器检查 Ajax 响应包含的内容。听起来您有一个字符串,但需要一个数组。

    如果是这种情况,您可以在 JS 或 PHP 端创建一个数组。对于 JS 方面,请参阅@GregorioPalama 的回答。 或者,您可以在 PHP 端执行此操作,这可能会更短:

    $response = explode(',', $foundCSV);
    

    然后使用json_encode($response)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多