Reputation: 143
I have a form with 2 submit buttons:
<form id="drinksForm" action="drinksHandler.php" method="POST">
<label for="drinks">Number of drinks</label>
<input type="number" class="form-control" name="drinks" min="1" max="30" required="required">
<input type="submit" name="buttonDrinks" class="btn btn-success" value="Got drinks">
<input type="submit" name="buttonDrinks" class="btn btn-danger" value="Didn't get drinks">
</form>
I use ajax to print a instant feedback message:
$('#drinksForm').submit(function(event){
event.preventDefault();
var form = $('#drinksForm');
$.ajax({
type : 'POST',
url : form.attr('action'),
data : form.serialize(),
})
.done(function(data){
$('#result').html(data);
})
.fail(function(data){
$('#result').html(data);
})
});
In drinksHander.php I want to see which button is pressed. If I delete
event.preventDefault();
I can see with
$_POST["buttonDrinks"]
which button is pressed. But because of the
event.preventDefault();
$.ajax({
type : 'POST',
url : form.attr('action'),
data : form.serialize(),
})
It doesn't send which button is pressed. So how can I send a variable to drinksHandler.php which shows which button is pressed.
Upvotes: 0
Views: 51
Reputation: 99
Remove the buttons name attr and add dynamically an input before submit. Also change the submit function to an on click button so the preventDefault should work. Something like this
$('body').on('click', '.btnSubmit', function(event){
event.preventDefault();
var form = $('#drinksForm');
form.append('<input type="hidden" name="buttonDrinks" value="'+$(this).val()+'">');
var formData = form.serialize();
console.log(formData);
$.ajax({
type : 'POST',
url : form.attr('action'),
data : formData,
})
.done(function(data){
$('#result').html(data);
})
.fail(function(data){
$('#result').html(data);
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="drinksForm" action="drinksHandler.php" method="POST">
<label for="drinks">Number of drinks</label>
<input type="number" class="form-control" name="drinks" min="1" max="30" required="required">
<input type="submit" class="btn btn-success btnSubmit" value="Got drinks">
<input type="submit" class="btn btn-danger btnSubmit" value="Didn't get drinks">
</form>
Upvotes: 4