javascript - 从 JS 发布表单值数组

标签 javascript arrays post

我有一个电子商务网站,我可以在其中将产品添加到多个类别。

我最初创建了一个类似这样的表单:

<form action='parse.php' method='post'>
//other form fields
<input type='checkbox' value='category1' class='product_category' name='product_category[]'>
<input type='checkbox' value='category2' class='product_category' name='product_category[]'>
<input type='checkbox' value='category3' class='product_category' name='product_category[]'>
//other form fields
<input type="submit" value="Go Live" name="submit" id="submit">
</form>

然后当它们被提交时,我可以像这样用 PHP 获取它们:

$categories = $_POST['product_category'];
foreach ($categories as $category){//do stuff here}

但是,现在网站变得越来越大,产品有更多与之相关的数据,这需要很长时间才能解析所有内容,因此我将尝试在我的提交上返回 false 并将内容通过以下方式发布到我的解析文件中AJAX,这样我就不必等待它解析所有内容来重新加载页面并添加更多内容。

所以我的新表单和 JS 看起来像这样:

<form action='parse' method='post'>
//other form fields
<input type='checkbox' value='category1' class='product_category' name='product_category[]'>
<input type='checkbox' value='category2' class='product_category' name='product_category[]'>
<input type='checkbox' value='category3' class='product_category' name='product_category[]'>
//other form fields
<input type="submit" value="Go Live" name="submit" id="submit" onclick="return false;">
</form>

$("#submit").on("click", function(){
    //get other variables
    var product_category = $('#product_category').val();
    var formData = new FormData();
    //append other values to formdata
    formData.append("product_category", product_category);
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
        if(this.readyState == 4 && this.status == 200){
            console.log(this.responseText);
        }
    };
    xmlhttp.open("POST", "parse.php", true);
    xmlhttp.send(formData);
}

基本上我的问题是我得到一个数组作为我发布的变量,现在我只得到一个值。

如何获取所有产品类别的数组,而不是像我在其余部分中那样执行 var Product_category = $('#product_category').val();输入?

抱歉,我知道可能有一种简单的方法可以做到这一点,但 JS 不是我最好的语言。

最佳答案

将其用于每个选中的复选框:

$("input:checkbox:checked").each(function(){
    yourArray.push($(this).val());
});

或者如果您想要每个复选框值:

$("input:checkbox").each(function(){
    yourArray.push($(this).val());
});

关于javascript - 从 JS 发布表单值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859678/

相关文章:

php - 我正在开发一个将信息提交到数据库的 AJAX 表单。当到达插入函数时它会记录错误

javascript - 使用 jQuery 和 Javascript 打开 IOS 相机应用程序并将其存储为变量

javascript - Chart.js 中是否有针对 beginAtZero 的全局设置?

javascript - 将文本插入文本框并模拟单击 Bot Framework Web Chat 中的按钮

Javascript 调用和应用方法

php - 在php中将字符串转换为多维数组

arrays - 快速将新列追加到数组中

c - C 中的 "Error: array subscript is not an integer"带指针

java - 如何将 json 放入 HTTPPost 请求正文中,然后在响应中读取正文

c# - POST 与 WebRequest 问题