繁体   English   中英

通过ajax发送数组到php

[英]sending array via ajax to php

我想通过 ajax 将选中复选框的 id 数组发送到 PHP。 我不断收到Undefined array key "progid" 当我在 jQuery 中提醒progid时,我得到了正确的 id。 我知道这是重复的问题,但我确实搜索了很多并尝试了很多解决方案,但没有任何效果。

html代码:

 while($row3 = $result3->fetch_assoc()) {
     $courseName = $row3['courseName'];
     $coursePrice = $row3['coursePrice'];
     $courseId = $row3['id'];
     $programList .= ' <div class="form-check">
                    
     <input type="checkbox" name="course[]" class="form-check-input" id="'.$courseId.'" value="'.$coursePrice.'">
     <label class="form-check-label" for="'.$coursePrice.'">'.$courseName .' price is '.$coursePrice.'$</label>
     </div>';

 } 
 echo $programList;

jQuery代码:

$('#submit').click(function() {
    var progid = [];
    $.each($("input[name='course[]']:checked"), function(){
        progid.push($(this).attr("id"));  
    });  
                   
    $.ajax({
        type: "POST",
        url: "test.php",
        data: progid,
        success: function(data){
            console.log('success: ' + progid);   
        }
    });  
});

php代码:

<?php
  extract($_POST);
  print_r($_POST);
  echo ($_POST["progid"]);
?>

编辑:当我将数据发送到同一页面时,它确实可以工作并在 span 内显示数组,但是当我将它发送到另一个 PHP 文件时它不起作用,它会显示错误。

因为您没有发布所有 html,所以您的提交事件是否可能没有被 event.preventDefault(); 禁用? ajax 没有执行?

$('#submit').click(function(e) {
    e.preventDefault();
..

https://api.jquery.com/event.preventdefault/

$.ajax({
        type: "POST",
        url: "test.php",
        data: {"progid" : progid},
        success: function(data) {
            console.log('success: ' + progid);   
        }
    });

您可以将JSON.stringify()用于数组:

$(document).ready(function () {
    $('#submit').click(function(e) {
        e.preventDefault();
        var progid = [];
        $.each($("input[name='course[]']:checked"), function(){
            progid.push($(this).attr("id"));  
        });
      
        let stringifyProgid = JSON.stringify(progid);
                       
        $.ajax({
            type: "POST",
            url: "test.php",
            data: {progid: stringifyProgid},
            success: function(data){
                console.log('success');   
            }
        });  
    });
});

在 PHP 中,您可以获得数组:

<?php
  $arrProgid = json_decode($_POST["progid"]);
  var_dump($arrProgid);
?>

我经常使用多选表单字段来执行此操作。

 var progid = []; $.each($("input[name='course[]']:checked"), function(){ progid.push($(this).attr("id")); }); $.ajax({ type: "POST", url: "ajax_post.php", data: { 'progid[]': progid }, success: function(data) { } });

然后在 PHP 系统上 $_POST['progid'] 将是一个数组。 因此,不需要其他人发布的所有 JSON 编码和解码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM