【问题标题】:how to handle data from multiple checkboxes and multiple submits with ajax如何使用ajax处理来自多个复选框和多个提交的数据
【发布时间】:2019-07-12 02:35:19
【问题描述】:

我正在尝试使用多个提交按钮从多个复选框发布数据。 重要的是:提交按钮不是表单的一部分,因为它们位于网站的不同位置。

这是我目前所拥有的:

<form class="checkboxform" action="" method="post">
   <input type="checkbox" name="check_list[]" value="C/C++"><label>C/C++</label><br/>
   <input type="checkbox" name="check_list[]" value="Java"><label>Java</label><br/>
   <input type="checkbox" name="check_list[]" value="PHP"><label>PHP</label><br/>
</form>

提交按钮:

<button type="button" id="delete" name="delete" onclick="submitForm()" value="Delete"/>Delete</button>
<button type="button" id="move" name="move" onclick="submitForm()" value="Move"/>Move</button>
<button type="button" id="copy" name="copy" onclick="submitForm()" value="Copy"/>Copy</button>

ajax:

function submitForm(url){
   var data = $(".checkboxform").serialize();
   $.ajax({
    type : 'POST',
    url  : url,
    data: data,
    success :  function(data){
        $(".echo").html(data);
       }
   });
};

php:

if($_POST['delete']) {
  if(isset($_POST['check_list'])){//to run PHP script on submit
    if(!empty($_POST['check_list'])){
    // Loop to store and display values of individual checked checkbox.
        foreach($_POST['check_list'] as $selected){
        echo $selected."</br>";
        }
        // code for delete goes here
        echo 'Files are  deleted!';
    }
  }
}

if($_POST['move']) {
  if(isset($_POST['check_list'])){//to run PHP script on submit
    if(!empty($_POST['check_list'])){
    // Loop to store and display values of individual checked checkbox.
        foreach($_POST['check_list'] as $selected){
        echo $selected."</br>";
        }
        //code for moving files goes here
        echo 'Files are moved!';
    }
  }
}

if($_POST['copy']) {
  if(isset($_POST['check_list'])){//to run PHP script on submit
    if(!empty($_POST['check_list'])){
    // Loop to store and display values of individual checked checkbox.
        foreach($_POST['check_list'] as $selected){
        echo $selected."</br>";
        }
        // code for copy goes here
        echo 'Files are copied!';
    }
  }
}

通过提交,php 不处理数据。我做错了什么?有人可以帮我吗?

所有代码都在同一个文件中,名为index.php

【问题讨论】:

  • 您的按钮不是
    元素内的输入元素,因此您的 if 语句检查其提交的名称永远不会被解析。
  • 好的。当按钮在表单之外时,我怎样才能实现这一点?因为按钮在网站上的不同位置

标签: php jquery ajax button checkbox


【解决方案1】:

你的js函数有参数

function submitForm(url){

但是调用函数的时候,没有设置参数

 onclick="submitForm()"

由于该参数是将 POST 发送到的 URL,因此它永远不会到达那里。您可能应该在浏览器开发人员窗口中看到一些错误。 F12 打开开发者窗口。

当您运行相同的 PHP 脚本时,无论它是删除、移动还是复制。我会像这样删除参数并在函数中对 url 进行硬编码。

function submitForm(){
   var data = $(".checkboxform").serialize();
   $.ajax({
    type : 'POST',
    url  : 'path/to/the.php',
    data: data,
    success :  function(data){
        $(".echo").html(data);
       }
   });
};

【讨论】:

  • 我做了这些更改,但在回声中,他重复了表单元素。不是 php 回声!
  • 该脚本是否以&lt;?php 标记开头?
  • 实际上忘记了...... 您在该脚本中所做的只是将表单元素重复回 Ajax 调用。所以这就是编写 PHP 代码的目的!!!!!!它正在这样做!
  • 好的。但在这种情况下,我怎样才能从复选框中捕获值并在 php 中处理它们?
  • 这听起来像是一个完全不同的问题!但是你有价值观,你回应它们。因此,在每个 IF 中,你必须编写一些代码来做任何你想做的事情
猜你喜欢
  • 2019-11-15
  • 2020-10-31
  • 1970-01-01
  • 2016-01-26
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 2020-12-21
相关资源
最近更新 更多