
Mam taki problem:
Wykonuję ajaxem zapytanie do bazy o wyświetlanie informacji o określonym ID i wyświetlam je w sformatowanym HTML'em, komunikacie zwrotnym.
Oto kod HTML:
<!-- WINO --> <div id="slides"> <div id="information_slide" class="slide"> <!-- kontener wyniku z JS --> </div> </div> <!-- WINO --> <!-- LOADING --> <div id="loading_slide" class="slide" style="display: none;"> </div> <!-- LOADING --> <!-- WYWOŁANIE BUTTON --> <?php echo '<div id="'.$id['id'].'" class="menuItem">Pokaż wino o ID = '.$id['id'].'</div>'; ?> <!-- WYWOŁANIE BUTTON -->
Oto kod JS:
$('.menuItem').on('click', function() { // ID Wina var id = $(this).attr('id'); $.ajax({ url: 'function.php', beforeSend: function () { $('#slides #information_slide').fadeOut(200, function() { $('#slides #loading_slide').fadeIn(200); }); }, data: { funkcja: 'pokaz_wino', id: id }, type: 'post', success: function(wynik) { setTimeout(function() { $('#slides #loading_slide').fadeOut(200, function() { $('#slides #information_slide').html(wynik).fadeIn(400); }); }, 500); } }); // alert(id); return false; });
Oto kod PHP:
<?php switch($_POST['funkcja']) { case 'pokaz_wino': pokaz_wino($_POST['id']); break; } } // Funkcja zwrotna wina function pokaz_wino($id) { $qwerty = "SELECT * FROM `wina` WHERE id='".$id."' LIMIT 1"; echo ' <div id="'.$id['id'].'" class="element"> <!-- kod HTML --> </div> '; } } ?>
W rezultacie mam jak wcześniej opisałem.
Skrypt wyświetla mi informacje (rekordy) o określonym ID z bazy - ta część jest OK.
Problem mam w momencie gdy w funkcji zwrotnej PHP (która wywoływana jest Ajaxem) znajduje się formularz, kożystający także z funkcji ajaxowej:
<?php echo ' <form method="post" action="" class="jcart"> <fieldset> <input type="hidden" name="jcartToken" value="'.$_SESSION['jcartToken'].'" /> <input type="hidden" name="my-item-id" value="'.$id['id'].'" /> <input type="hidden" name="my-item-url" value="" /> <input type="hidden" name="my-item-qty" value="1" size="3" class="item-sztuk" /> <input type="submit" name="my-add-button" value="do koszyka" class="item-button" /> </fieldset> </form> '; ?>
Skrypt JS jest od samego początku załadowany na stronę:
W momencie gdy wywołuję funkcję Ajax, odświerza mi WINO i przycisk, który powinien dodać mi je do koszyka, odświerza stronę i dopiero dodaje do koszyka.
Próbowałem już dodać return false; w skrypcie PHP, ale wtedy nie dzieje się kompletnie nic.
Jak rozwiązać ten problem ?
Pozdrawiam !