【问题标题】:Jquery post: handling $_POST checkboxes with foreach loop?Jquery 帖子:使用 foreach 循环处理 $_POST 复选框?
【发布时间】:2014-09-11 06:29:22
【问题描述】:

当 (controlpanel.php) 输入 html 名称为“checkbox[]”时,此 php 可用于删除多个值,但是我不确定如何使用 jquery 处理这些 $_POST 值?我尝试将“复选框 []”放在 id 上,但没有奏效。当我尝试 vardump($_POST) 时,无论勾选了多少个复选框,我每次都得到相同的值。

test_process.js

$('#delete_submit').on('click', function(event) {
    alert("Test");
    event.preventDefault();
    var delete_value = $('#checkbox').val();
    $.post('ajax/name.php', {delete_template: delete_value}, function(data) {
        $('div#delete_data').text(data);
   });      
});

ajax/name.php

<?php
include('C:\xampp\htdocs\email1\class\db.php');
require_once('C:\xampp\htdocs\email1\config\db.php');
require_once('C:\xampp\htdocs\email1\class\Login.php');

$login = new Login();
$user = $_SESSION['user_name'];
$db = new Database();
$db->connect();

    //delete
if (isset($_POST['delete_template'])) {
foreach($_POST as $value){
        $db->delete('templates','template_name="'.$value.'"');
        echo $value. " has been successfully deleted.";
}
}

控制面板.php

<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
</head>

<form action="ajax/name.php" name="delete_template_form" id="delete_template_form" method="post">
<?php print "<table border=\"1\">
<th>Template Name</th>
<th>Template Description</th>
<th> </th>";
foreach($res as $row){ 
echo "<tr>";
echo "<td>". $row['template_name']. "</td>";
echo "<td>". $row['template_description']. "</td>";
echo "<td><input type=\"checkbox\" value=".$row['template_name']." name=\"checkbox\" id=\"checkbox\"></td>";
echo "<tr/>"; 
} 
print "</table>"; ?>
<br/><button type="button" name="delete_submit" id="delete_submit">Delete</button>
</form>
<div id="delete_data"></div>

<script type="text/javascript" src="test_process.js"></script>
</body>
</html> 

【问题讨论】:

    标签: php jquery ajax post foreach


    【解决方案1】:

    id 应该是唯一的,因为您对每个复选框都使用相同的id -> id=\"checkbox\"var delete_value = $('#checkbox').val(); 将只选择id=\"checkbox\" 的第一个实例。

    1- 将您的复选框更改为数组 (name=\"checkbox[]\"),将您的 ids 更改为独特的 (id=\"checkbox".$row['id'].") -

    echo "<td><input type=\"checkbox\" value=".$row['template_name']." name=\"checkbox[]\" id=\"checkbox".$row['id']."\"></td>";
    

    2- 更改您的 javascript 以序列化您的表单输入并将其作为数据发送 $('#delete_template_form').serialize() -

    $.post('ajax/name.php', $('#delete_template_form').serialize() , function(data) {
          $('div#delete_data').text(data);
    });    
    

    3- 然后在你的 php 中,循环检查你的复选框

    if (isset($_POST['checkbox'])) {
    foreach($_POST['checkbox'] as $value){
            $db->delete('templates','template_name="'.$value.'"');
            echo $value. " has been successfully deleted.";
    }
    

    【讨论】:

    • 这很好用,除了 jquery.serialize 方法,当有空格时不允许整个模板名称通过。
    • 那是因为您的 html 中的语法不正确。您的 value 属性需要用引号括起来。将value=".$row['template_name']." 更改为value=\"".$row['template_name']."\"value='".$row['template_name']."'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多