Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > При нажатии CheckBox передать параметр в PHP


Автор: Zlo 29.12.2015, 23:04
Всем доброго времени суток и с наступающим!
Для начала опишу задачу:
Есть страничка с некоторым количеством чекбоксов. При нажатии на который должно меняться значение в БД.
Никак не могу понять как сделать чтобы при нажатии на чек бокс скрипту передавалось некоторая переменная или несколько переменных которые бы однозначно идентифицировали запись в БД.
 
Сам в яваскрипте вообще никак. Но с помощью гугла удалось кое что сделать, то есть какие-то данные я отправлять уже умею, но никак не могу понять как мне сделать так чтоб где-то в описании чекбокса внутри HTML были вот те данные которые нужно отправить PHP скрипту и как их забрать из этого описания.

Собственно код который сейчас есть
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd"> 
<html> 
<head> 
<title>Проверка checkbox</title> 
<meta http-equiv="content-type" content="text/html; charset=windows-utf-8" />
<script type="text/javascript" src="/ajax/js/jquery.js"></script>
<script type="text/javascript">
$(document).ready( function() {

var sendData =  $(':checkbox').map(function(i,el){
    if($(el).prop('checked')){
        return $(el).val();
        }
})

    $(':checkbox').click(function() {
        $.ajax({
            type: 'POST',
            url: 'get.php',
            data: 'a='+sendData,
            
            cache: false,
            success: function(result) {
                $('#content1').html(result[0]);
            },
        });
    });
});
</script>
</head> 
<body> 

<input type='checkbox' id='check1' onclick='javascript:sendCheckInfo(this)'>Передать параметр 2
</BR>
<input type="checkbox" name="1" value="1">Перередать параметр 1
<table>
<tr>
<td id="prev">prev</td>
<td id="content1">X</td>
<td id="next">next</td>
</tr>
</table>
</body> 
</html>


Если вместо
Код

data: 'a='+sendData,

напишу 
Код

data: 'a=2',

то данные отлично передаются в PHP скрипт.
 если же как указано data: 'a='+sendData, то в скрипт попадает пустой параметр а

Уже всю голову сломал, или я не так гуглю.  smile  


Автор: Zlo 30.12.2015, 00:03
Если 
Код

var sendData =  $(':checkbox').map(function(i,el){
    if($(el).prop('checked')){
        return $(el).val();
        }
})

заменить на 
Код

var sendData = $(':checkbox').val();

то отправляется значение value, но всегда первого чекбокса на странице(

Добавлено через 5 минут и 27 секунд
Ладно, с этим я кажется разобрался.
Оказывается надо было поместить переменную внутрь функции:
Код

$(':checkbox').click(function() {
    var sendData = $(this).val();
        $.ajax({
            type: 'POST',
            url: 'get.php',
            data: 'a='+sendData,
            
            cache: false,
            success: function(result) {
                $('#content1').html(result[0]);
            },
        });
    });


Добавлено через 8 минут и 22 секунды
А может тогда еще кто подскажется как менять значение чекбокса в зависимости от того что ответил скрипт?
Или например если скрипт не ответил потому, что интернет отключился, как в таком случае отменить установку\снятие флажка?

Автор: ksnk 30.12.2015, 00:26
У чекбокса нужно проверять не val(), а значение атрибута checked. Или, если ближе к jQuery -
Код

var sendData = $(this).is(':checked')?1:0;
...
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)