将数组传递给隐藏的输入并检索具有不同索引上的元素的数组

Passing array to hidden input and retrieve array with elements on different indexes

我有一些字段会在后台 javascript 单击时自动创建。每个字段都包含一个用于删除该字段的删除按钮,现在我需要确保 PHP 代码检索已删除的字段并将它们从数据库中删除。所以我正在做的是,我在表单中添加了一个隐藏的输入,每当某个字段被删除时,该字段的 id 就会作为一个数组被推送到隐藏的输入中。当我在 php 中检索它时,我会这样得到它:

array (size=1)
  0 => string '13,14' (length=5)

而不是想要的

array (size=2)
    0 => string '13' (length=2)
    1 => string '14' (length=2)

Javascript:

$(wrapper).on("click", ".RemoveField", function(e) {
    var advantageId = $(this).siblings('.advantageId').val();
    var productId = $(this).siblings('.productId').val();
    e.preventDefault();

    deleteAdvantages.push(advantageId);

    $("input[name='deleteAdvantageId[]']").val(deleteAdvantages);

    $(this).parent('div').remove();
    x--;
})

并且 PHP 我正在检索隐藏输入的 post。旁边还有一些安全提示吗?

您可以在 PHP 中使用函数 explode 执行此操作。此函数的作用是通过分隔符将字符串拆分为数组,因此在您的情况下,添加:

$array = explode(',', $arrayThatHasTheString[0]);

要获取数组,您需要提交一个输入值数组,而不是提交一个逗号分隔的字符串作为值。

所以 1 种解决方案是在服务器端使用 PHP 拆分字符串,例如

<input name="deleteAdvantageId" type="hidden" />

$("input[name='deleteAdvantageId']").val(deleteAdvantages);

然后

$ids = $_POST['deleteAdvantageId']
$array = explode(",", $ids);

您不能提交隐藏数组,将您的数组保持在 JS 级别,然后将其与您的 Ajax 请求一起提交:

$.ajax({type: "POST", url: "m_url.php", data: {some_data, array: deleteAdvantages}, success: function (data) {...
 }
});

PHP 将捕捉为:

$_POST[array] => Array ( 
  [0] => 1
  [1] => 34
  [2] => 56
  [3] => 78 
)

否则,您需要展开输入才能将该字符串转换为数组...