несколько полей с одинаковыми именами jquery ajax

59
8

У меня есть несколько ящиков с одинаковым именем. Прямо сейчас, когда я выбираю значение из первого окна выбора, он отправляет это и обновляет базу данных. Когда я выбираю и элемент в другом поле выбора, он отправляет значение из первого. Я чувствую, что javascript не прав. Любая идея, что не так?

Heres my html:

<?php foreach ($result as $row): ?>
<select class="form-control" name="category[]" required>
<option value="" disabled selected>Select The Category </option>
<option value="station">Station</option>
<option value="equipment">Tools/Equipment</option>
<option value="supplies">Supplies</option>
</select>
<input id="taskID" value="<?php echo $row['id']; ?>" hidden></input>
<?php endforeach; ?>

JQuery:

$(document).on('change', 'select[name="category[]"]', function(event){
$('select[name="category[]"]').each(function(){
var formData = {
'task': $('select[name="category[]"]').val(),
'name': $('input[name="taskID[]"]').val(),
};
$.ajax({
type: 'POST',
url: 'php/addressBook.php',
data: formData,
dataType: 'html',
encode: true
})
.done(function(msg) {
$(".alert").html(msg);
})
.fail(function(data) {
console.log(data);
})
event.preventDefault();
});
});

addressBook.php

if (isset($_POST['task'])) {

$task = $_POST['task'];
$id = $_POST['name'];

$stmt = $con->prepare("UPDATE members SET task = ? WHERE id = ?");
$stmt->bind_param('ss', $task, $id);
$stmt->execute();

}

спросил(а) 2017-04-09T02:23:00+03:00 3 года, 6 месяцев назад
1
Решение
72

Измените атрибут класса на: class="form-control categorySelect"

$('.categorySelect').change(function(event){
for(selectInstance of $('.categorySelect')){
var formData = {
'task': $(selectInstance).val(),
'name': $(selectInstance).next().val()
};

$.ajax({
type: 'POST',
url: 'php/addressBook.php',
data: formData,
dataType: 'html',
encode: true
})
.done(function(msg) {
$(".alert").html(msg);
})
.fail(function(data) {
console.log(data);
})
event.preventDefault();
}

});

ответил(а) 2017-04-09T02:36:00+03:00 3 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема