3

ユーザーには、チェックボックスから選択するオプションがあります。チェックボックスを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";
}
4

1 に答える 1

2

bucketskeyは配列ですが、php スクリプトでが必要です。

そうdata: buckets,あるべきですdata: {buckets : buckets}、それからあなたはで得ることができます$_POST['buckets']

を使用するだけ の場合data: buckets,$_POSTはすでに必要なデータです。

于 2013-09-03T01:46:05.420 に答える