javascript - 将选中的复选框字符串从 javascript 传递到 php 页面

标签 javascript php jquery html

产品列表是使用 PHP 代码创建的,每个产品都有自己的复选框,我已经使用 Java 脚本代码来获取所有选定复选框的值,现在我需要调用另一个 PHP 页面来接收此字符串数据并填充所有选定的产品列表。你能告诉我如何使用 javascript POST 方法将数据发送到另一个 php 页面吗?

用于创建产品列表并获取所选复选框值的代码如下:

<?php
$cnt=0;
$rslt = mysqli_query($conn,"SELECT Icode,Name,Size,Style FROM productinfo");
if(!$rslt)
{
    die(mysqli_error($conn));
}
else
{
    echo " <table width='100%'>";
    while($row = mysqli_fetch_assoc($rslt))
    {
        if($cnt==0)
        {
            echo "<tr>";
        }
        echo "<td width='30%'>
              <div class='card'>
              <img src='upload/"."download.jpg"."' alt='Avatar' style='width:100px' >
              <div class='container'>
                <h4><b>".$row['Name']."&nbsp;&nbsp;<input type='checkbox' name='prodchklist' value=".$row['Icode']." '/> </b></h4> 
                <p>".$row['Size']."</p> 
                <p>".$row['Icode']."</p> 
              </div>
            ";
            ?>
            </div>
    <?php
    echo "</td>";
    if($cnt==2)
    {
        $cnt=0;
        echo "</tr>";
    }
    else
        $cnt = $cnt + 1;
    }
}
echo "</table>";
?>
</div>
<button id="SendInquiry" style="display: block;">Send Inquiry</button>
<script type='text/javascript'>
$(document).ready(function(){
    $('#SendInquiry').click(function(){
        var result = $('input[type="checkbox"]:checked');
        if (result.length > 0)
        {
            var resultstring = result.length +"checkboxes are checked";
            result.each(function(){
            resultstring+=$(this).val();
            }
        );
        $('#divrslt').html(resultstring);
    }
    else
    {
      $('#divrslt').html("nothing checked");
    }
});
});

</script> 

最佳答案

我不知道您使用 javascript 收集复选框值并将其发布到另一个 PHP 页面的原因。您无需使用 javascript 即可实现您想要的目标:

将复选框包含在表单中,将其操作设置为第二页,并且不要忘记将其方法设置为 POST,例如:

<form action="second.php" method="post">
</form>

在复选框名称末尾添加 [] 使其成为可以使用一个名称发送多个值的数组,例如:

<input type="checkbox" name="prodchklist[]" value="item1">
<input type="checkbox" name="prodchklist[]" value="item2">
<input type="checkbox" name="prodchklist[]" value="item3">

但是,如果您确实想使用 javascript 调用第二个页面(例如使用 ajax),请执行以下操作:

将选定的值存储在一个数组中,而不是将每个值附加到一个变量中。

// add this, to store the data you want to post
var data = {
    prodchklist: []
};

var result = $('input[type="checkbox"]:checked');
if (result.length > 0)
{
    var resultstring = result.length + " checkboxes are checked";
    result.each(function(){
        resultstring += $(this).val();
    }

    // add this
    data.prodchklist.push($(this).val());
}

然后在ajax调用期间:

$.post('second.php', data, function(response) {
    ....
});

在你的第二个 PHP 文件中,像往常一样检索它,例如:

$selectedProducts = $_POST['prodchklist'];

这适用于两种方法(不使用 javascript 和使用 ajax)。

$selectedProducts 将是一个数组而不是简单的字符串值。只需迭代数组即可使用值,例如:

foreach ($selectedProducts as $product) {
    echo $product;
}

关于javascript - 将选中的复选框字符串从 javascript 传递到 php 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44274562/

相关文章:

javascript - 即使在编译错误后,Typescript 编译器也会生成 javascript

javascript - 为什么 WebSockets 在握手中使用哈希?

javascript - 在 jQuery 数据表中禁用 ctrl+click 选择

php - 使用自动递增时出现语法错误

php - 电子邮件主题分隔符中的重音词 - 我该如何阻止它?

javascript - Javascript 中的原型(prototype)对象破坏了 jQuery?

javascript - 如何使用javascript解析xml键名及其值?

javascript - 在 React 状态下使用 Flow 的嵌套对象

php - 如何在php中将多个<br/>标签转换为单个<br/>标签

javascript - 在 jQuery 中使用元素内容进行计算