经过几个小时的搜索和测试,我终于决定发布一个问题。
我需要能够使这样的东西工作与一个函数。
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)
。