用户可以选择从复选框中进行选择。我想通过 jquery 将复选框作为数组获取,然后通过 ajax 传递给 php。看来我无法获取数组和进程。我在 SO 上看到了其他答案,但似乎都没有用。
HTML/PHP
<?php foreach ( $results['buckets'] as $bucket ) { ?>
<div><?php echo $bucket->name ?></div>
<input type="checkbox" name="buckets[]" id="<?php echo strtolower( $bucket->name ) ?>" class="buckets" value="<?php echo $bucket->id ?>" style="visibility: hidden" /><label for="<?php echo strtolower( $bucket->name ) ?>" class="<?php echo strtolower( $bucket->name ) ?>"><?php echo $bucket->name ?></label>
<?php } ?>
JS
$( function() {
$( "#form" ).submit( function() {
var buckets = new Array();
$( "input[name='buckets[]']:checked" ).each( function() {
buckets.push( $( this ).val() );
} );
var valid = false;
$.ajax( {
type: "POST",
url: "/scripts/validateBucketSelect.php",
data: buckets,
cache: false,
async: false,
success: function( error ) {
if ( error == "null" ){
valid = true;
} else {
$( ".errorMessage" ).html( error );
}
}
} );
return valid;
} );
} );
PHP
$postData = $_POST;
if ( count( $postData['buckets'] ) < 3 ) {
echo "Oops! You have to select at least 3 buckets.";
} elseif ( count( $postData['buckets'] ) > 5 ) {
echo "Oops! You cannot select more than 5 buckets.";
} else {
echo "null";
}
最佳答案
buckets
是一个数组,但是你需要php脚本中的key
。
所以 data: buckets,
应该是 data: {buckets : buckets}
,然后你可以用 $_POST['buckets']
.
如果你只是使用
data: buckets,
,那么$_POST
就已经是你要的数据了。
关于php - 通过 Ajax 将多个复选框传递给 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582810/