[英]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.