如何在JavaScript中使用单个HTML输入字段作为数组?



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

我需要能够使这样的东西工作与一个函数。

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

目前,我可以从数据库中抓取CSV,因为这就是它的存储方式,myColumn = 1,3,5,6。我可以让它作为一个AJAX成功响应,但它似乎要添加引号。然后我尝试将JSON编码添加到我的PHP方面,并将JSON解析添加到成功调用,但仍然无法使函数工作。最终目标是根据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);

In my AJAX Success

var FilterArray = JSON.parse(response);

我也试过没有json_encode,只是把它发送到一个不添加引号的输入值。

总之,我如何将csv例如1,3,5,6的存储值传递给上面所示的函数?

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

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

,然后将结果传递给函数。按照您的命名,代码应该是这样的:

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

代码的作用:

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

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

如果是这种情况,你可以在JS或php端创建一个数组。至于js方面,请参考@GregorioPalama的答案。或者,您可以在php端执行此操作,该操作可能更短:

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

,然后使用json_encode($response)

最新更新