如何使用ajax处理来自多个复选框和多个提交的数据

I am trying to post data from multiple checkboxes with several submit buttons. Important is: the submit buttons are not part of the form because they are on a different place on the website.

This is what i have so far:

<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>

The submit buttons:

<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>

The ajax:

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

The 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!';
    }
  }
}

By submitting, php does not handle the data. What i am doing wrong? Can someone help me with that?

All the code is in the same file, called index.php

dsiimyoc804955
dsiimyoc804955 好。当按钮在表单之外时,如何实现此功能?因为按钮位于网站上的不同位置
11 个月之前 回复
douzhang6176
douzhang6176 您的按钮不是<form>元素中的输入元素,因此您的if语句检查其提交的名称永远不会被解析。
11 个月之前 回复

1个回答

Your js function has a parameter

function submitForm(url){

But when you call the function, there is no parameter set

 onclick="submitForm()"

As that parameter is the URL to send the POST to, it never gets there. You probably should be seeing some errors in the browsers developer window. F12 to open the developer windows.

As you are running the same PHP script regardless of whether it is a delete, move or copy. I would remove the parameter and hardcode the url in the function like this.

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

展开翻译

译文



你的js函数有一个参数</ p>

  function submitForm(url){
</ code> </ pre>

但是当你调用函数时,没有参数集</ p>

  onclick =“submitForm()”
</ code> </ pre>

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

当您运行相同的PHP脚本时,无论是删除,移动还是复制。 我会删除参数并对函数中的url进行硬编码,如下所示。</ p>

  function submitForm(){
var data = $(“。checkboxform”)。serialize() ;
$ .ajax({
type:'POST',
url:'path / to / the.php',
data:data,
success:function(data){
$(“ .echo“)。html(data);
}
});
};
</ code> </ pre>
</ div>

dqfr90979
dqfr90979 正如海豚说的那样“......并感谢所有的鱼”
11 个月之前 回复
dongshi1424
dongshi1424 所以这行//删除代码应该在IF里面,那就是删除,移动或复制你删除,移动或复制的地方
11 个月之前 回复
duanchi5078
duanchi5078 这听起来像是一个完全不同的问题! 但你有价值观,你回应他们。 所以在每个IF中,你必须编写一些东西来做任何你想做的事情
11 个月之前 回复
dqmdlo9674
dqmdlo9674 好。 但在这种情况下,我怎样才能从复选框中捕获值并在php中处理它们?
11 个月之前 回复
dqf67993
dqf67993 实际上忘了....你在该脚本中所做的只是将表单元素重复回Ajax调用。 这就是编写PHP代码的原因!!!!! 它正在这样做!
11 个月之前 回复
dsgnze6572
dsgnze6572 该脚本是否以<?php标记开头?
11 个月之前 回复
dqnrk44682
dqnrk44682 我做了这些改变,但在回声中,他重复了表格元素。 不是php回音!
11 个月之前 回复
dongmei2002
dongmei2002 你能告诉我怎样才能做到这一点吗?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问