Vraag betreffende link in callback message ajax jquery
Door
Brecht S
op 04-05-2015 10:09
gewijzigd op 04-05-2015 10:10
1.139 views
Ik heb een ajax script wat perfect werkt. Als dat is uitgevoerd (succesvol) dan stuurt mijn aparte php een tekst terug die op de frontend verschijnt. Ik heb dit gedaan met
$( "#msg" ).append( msg );
Als ik in die message een button zet waarop kan geklikt worden zoals bvb <button id="test" type="button">Testknop</button> dan werkt deze niet. Ik heb ook al de onclick methode geprobeerd.
Waarschijnlijk komt dit doordat ik de verwerking ervan op mijn frontend doe waar het ajax script staat?
Het onclick event kan pas toegevoegd worden als het element aan de DOM toegevoegd is. Dat wil zeggen dat na '$( "#msg" ).append( msg );' dit moet komen:
Ik zal even mijn code beetje toelichten.
@Frank: jouw oplossing werkt perfect. Ik had jouw stukje code ook al bedacht maar op de verkeerde plaats gezet in mijn javascript ;-)
Mijn javascript is al volgt:
<script type="text/javascript">
$(function () {
$('.group').hide();
$('#showhide').show();
// Datum
$('#datetimepicker4').datetimepicker({
format: 'YYYY-MM-DD'
});
$("#datetimepicker4").on("dp.hide", function(e) {
//alert($(this).val());
var datum = $(this).val();
$.ajax({
url : "test-ajax.php",
type: "POST",
data : {datum : datum},
success: function(msg)
{
//$( "#msg" ).html( '<br><br>' );
$( "#msg" ).append( msg );
$('#showhidebutton').click(function() {
alert('Klik!');
});
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});
});
// Einde datum
// Couverts
$("#couverts").keyup(function(){
var couverts = $(this).val();
$.ajax({
url : "test-ajax.php",
type: "POST",
data : {couverts : couverts},
success: function(msg)
{
$( "#msg" ).append( '<br><br>' );
$( "#msg" ).append( msg );
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});
});
// Einde couverts
// Tijd
$('#datetimepicker3').datetimepicker({
format: 'HH:mm',
stepping: 15
});
$("#datetimepicker3").on("dp.hide", function(e) {
//alert($(this).val());
var tijd = $(this).val();
$.ajax({
url : "test-ajax.php",
type: "POST",
data : {tijd : tijd},
success: function(msg)
{
$( "#msg" ).append( '<br><br>' );
$( "#msg" ).append( msg );
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});
});
// Einde tijd
setTimeout(function()
{
$('.group').hide();
$('#showhide3').show();
}, 10000);
});
</script>
En in mijn test-ajax.php file staat het volgende:
<?php
session_start();
$datum = $_POST['datum'];
$tijd = $_POST['tijd'];
$couverts = $_POST['couverts'];
$max_couverts = '5';
require ('config.php');
$conn = mysql_connect($host,$user,$pass) or die (mysql_error());
mysql_select_db($dbnm) or die (mysql_error());
if (!$datum == '') {
$sql = "SELECT * FROM reservatie WHERE datum = '$datum'";
$res = mysql_query($sql) or die (mysql_error());
$num_rows_datum = mysql_num_rows($res);
if ($num_rows_datum == 0) {
echo 'Nog geen reservaties op deze datum';
echo '<br>Reservatie kan doorgaan zonder problemen';
echo '<br><button type="button" id="showhidebutton">Doorgaan</button>';
} else {
echo 'Datum komt al voor in db';
echo '<br>Eerst checken of er nog plaats is';
$_SESSION["datum"] = $datum;
$sql = "SELECT SUM(couverts) as reservaties FROM reservatie WHERE datum = '$datum'";
$res = mysql_query($sql) or die (mysql_error());
while($row = mysql_fetch_assoc($res)) {
$reservaties = $row['reservaties'];
}
echo '<br>Er zijn tot nu toe al '.$reservaties.' reservaties op deze datum';
echo '<br>Het max aantal toegelaten reservaties is '.$max_couverts;
if ($reservaties >= $max_couverts) {
echo '<br>Geen reservaties meer mogelijk die dag';
} else {
echo '<br>Reservatie kan doorgaan zonder problemen';
echo '<br><button type="button" id="showhidebutton">Doorgaan</button>';
}
}
}
if (!$couverts == '') {
$sql = "SELECT * FROM reservatie WHERE datum = '".$_SESSION['datum']."'";
$res = mysql_query($sql) or die (mysql_error());
$num_rows_couverts = mysql_num_rows($res);
if ($num_rows_couverts == 0) {
echo 'Nog geen reservaties op deze datum';
echo '<br>Reservatie kan doorgaan zonder problemen';
} else {
echo '<br>Datum komt al voor in db';
echo '<br>Terug checken of er nog plaats is';
$_SESSION["couverts"] = $couverts;
$sql = "SELECT SUM(couverts) as reservaties FROM reservatie WHERE datum = '".$_SESSION['datum']."'";
$res = mysql_query($sql) or die (mysql_error());
while($row = mysql_fetch_assoc($res)) {
$reservaties = $row['reservaties'];
}
echo '<br>Er zijn tot nu toe al '.$reservaties.' reservaties op deze datum';
echo '<br>Het max aantal toegelaten reservaties is '.$max_couverts;
echo '<br>Nu hebben we er '.$couverts.' extra bij';
echo '<br>Dus in totaal zouden we nu '.($couverts + $reservaties).' couverts hebben';
$tot_couverts = $couverts + $reservaties;
if ($max_couverts <= $tot_couverts) {
echo '<br>Geen reservaties meer mogelijk die dag';
} else {
echo '<br>Reservatie kan doorgaan zonder problemen';
}
}
}
if (!$tijd == '') {
$sql = "SELECT * FROM reservatie WHERE datum = '".$_SESSION['datum']."'";
$res = mysql_query($sql) or die (mysql_error());
$num_rows_tijd = mysql_num_rows($res);
if ($num_rows_tijd == 0) {
echo 'Nog geen reservaties op deze datum';
echo '<br>Reservatie kan doorgaan zonder problemen';
} else {
echo '<br>Datum komt al voor in db';
echo '<br>Terug checken of er nog plaats is';
$_SESSION["tijd"] = $tijd;
$sql = "SELECT SUM(couverts) as reservaties FROM reservatie WHERE datum = '".$_SESSION['datum']."'";
$res = mysql_query($sql) or die (mysql_error());
while($row = mysql_fetch_assoc($res)) {
$reservaties = $row['reservaties'];
}
echo '<br>Er zijn tot nu toe al '.$reservaties.' reservaties op deze datum';
echo '<br>Het max aantal toegelaten reservaties is '.$max_couverts;
echo '<br>Nu hebben we er '.$_SESSION['couverts'].' extra bij';
echo '<br>Dus in totaal zouden we nu '.($_SESSION['couverts'] + $reservaties).' couverts hebben';
$tot_couverts = $_SESSION['couverts'] + $reservaties;
if ($max_couverts <= $tot_couverts) {
echo '<br>Geen reservaties meer mogelijk die dag';
} else {
echo '<br>Reservatie kan doorgaan zonder problemen';
}
}
}
?>