Как передать выбранные значения флажка из jQuery в PHP в виде массива? - PullRequest
0 голосов
/ 14 марта 2012

ОБНОВЛЕННЫЙ КОД:

Теперь у меня есть этот код:

<h2>Testing</h2>

<input type="checkbox"  name="fruit1" id="id1"  class="box">Banana<br /><br />
<input type="checkbox"  name="fruit2" id="id2"  class="box">Cherry<br /><br />
<input type="checkbox"  name="fruit3" id="id3"  class="box">Strawberry<br /><br />
<input type="checkbox"  name="fruit4" id="id4"  class="box">Orange<br /><br />
<input type="checkbox"  name="fruit5" id="id5"  class="box">Peach<br /><br />
<form id="myForm" action="2.php" method="post">
    <input type="submit" id="groupdelete" value="clickme"><br />
</form>     

<script src="jquery-1.7.1.js" type="text/javascript"></script>
<script>

$('#groupdelete').on('click', function(){
var names = [];
$('input:checked').each(function() {
    names.push($(this).attr("id"));

});

$.post("2.php", { "names" : names }, function(data) {
    names = names.join(",");
    // do something on success
    alert(data); //if everything is working correctly should alert the var_dump here
});
});

</script>

На странице 2.php у меня есть это:

<?php
$names = explode(",",$_POST['names']);
var_dump($names);
?>

Который печатает: массив(1) {[0] => string (0) ""}

Что я делаю неправильно ???

Зоран

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Я бы сделал что-то вроде этого:

HTML-форма

<form id="myForm" action="test.php" method="post">
    <input type="checkbox" name="fruit[]" value="1">Banana<br /><br />
    <input type="checkbox" name="fruit[]" value="2">Cherry<br /><br />
    <input type="checkbox" name="fruit[]" value="3">Strawberry<br /><br />
    <input type="checkbox" name="fruit[]" value="4">Orange<br /><br />
    <input type="checkbox" name="fruit[]" value="5">Peach<br /><br />
    <input type="submit" id="groupdelete" value="clickme"><br />
</form>

JQuery код

$(document).ready(function() {
    $("#myForm").submit(function(event) {
        event.preventDefault();
        alert("Will post: " + $(this).serialize());
        $.post($(this).attr("action"), $(this).serialize(), function(response) {
            alert(response);
        });
    });
});

PHP код

var_dump($_POST);

Выход

Предполагается, что были установлены первые два флажка:

array(1) {
  ["fruit"]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
}
0 голосов
/ 14 марта 2012

Отправить ajax-запрос на сервер

names.push($(this).attr("id"));

$('#groupdelete').on('click', function(e){
    e.preventDefault(); //stop the default form action
    var names = [];
    $('input:checked').each(function() {
        names.push($(this).attr("id"));
    });

    $.post("page2.php", { "names" : names }, function(data) {
        // do something on success
        alert(data); //if everything is working correctly should alert whatever page2.php echos or prints
    });

});

Обновление 1

Массив JS и массив PHP - это две разные вещи, и простой способ преодолеть это - объединение

names = names.join(","); //Join all the array with a comma nd send

Позже в PHP Script используйте explode (), чтобы вернуть ваш массив

$names = explode(",",$_POST['names']);
var_dump($names);

Обновление 2

Внесите следующие изменения в текущий код

names = names.join(",");
$.post("2.php", { "names" : names }, function(data) {
    alert(data); //if everything is working correctly should alert the var_dump here
});

Обновление 3

Я создал скрипку , с правильным способом сделать это.Проверьте это и обновите свои коды согласно.

Обновление 4

Хорошо, наконец, начните получать изображение сейчас.Проверьте это обновление .

По сути, создайте скрытый элемент, значение которого будет обновлено значением идентификатора установленного флажка, и отправьте его.

Обновление 5

Если вы хотите остановить отправку поля.Вы можете назначить disabled="disabled", чтобы остановить его отправку.

Вот обновленное fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...