Autor | Zpráva | ||
---|---|---|---|
_fantomas Profil |
#1 · Zasláno: 21. 11. 2016, 19:44:46
Ahoj, chcem sa naučiť trochu s ajaxom, potrebujem aby po stlačeni tlačitka Kúpiť bez refreshu stránky zapisalo data do databázy, snaižil som sa niečo napísať a odkukať z knižky ale volajako mi to nefunguje.
Neviete kde je problém? test.php <?php $cartdata = $_POST['quantity']; Database::insertData('INSERT INTO `cart` VALUES (:quantity)', $cartdata); function test() { var mnozstvo = document.getElementById("quantity").value; $.ajax({ type: 'post', url: 'http://localhost/template/flory/ajax/test.php', data: "quantity="+mnozstvo, success: function() { console.log('data zapisane'); } }); } <form id="product-form" method="post" action=""> <input type="number" id="quantity" min="1" max="18" step="1" value="1" name="quantity"> <input onclick="test(); return false;" type="submit" id="buy" name="buy" value="Kúpiť"> </form> |
||
CZechBoY Profil |
#2 · Zasláno: 21. 11. 2016, 20:01:53
Píše ti to nějakou chybu? v php/konzole prohlížeče.
|
||
_fantomas Profil |
#3 · Zasláno: 21. 11. 2016, 20:03:51
nie len mi to napiše že data zapísané
|
||
RastyAmateur Profil |
#4 · Zasláno: 21. 11. 2016, 20:05:10
_fantomas:
Možná se pletu (moc s ajaxem nedělám), ale nemělo by být namísto type: "post" raději method: "post" ?
Jinak, doporučuji to testovat tím způsobem, že ti ten PHP soubor něco vypíše a ty si to pak pomocí javascriptu nějak zobrazíš (třeba i do té konzole). |
||
mckay Profil |
_fantomas:
Loguje Vám to něco do konzole? (F12 ve většině prohlížečů) Na první pohled bych tipl, že Vám chybí vložení jquery knihovny. Něco na tento způsob: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> Osobně bych to pro Váš způsob udělal takto: $(document).ready(function(){ $('form#product-form').submit(function (event) { // Práce s daty (nejspíš následující řádek) var mnozstvo = document.getElementById("quantity").value; $.ajax(...); // Váš ajax požadavek event.preventDefault(); // Zabrání "fyzickému" odeslání formuláře }) }); RastyAmateur: „Možná se pletu (moc s ajaxem nedělám), ale nemělo by být namísto type: "post" raději method: "post" ?“
Ne, nezbytně, method je alias pro type . Type se doporučuje používat pro starší jQuery (1.9.0 a dříve).
|
||
_fantomas Profil |
#6 · Zasláno: 21. 11. 2016, 20:07:43
jquery vložené mám
|
||
mckay Profil |
„jquery vložené mám“
Zkuste to tedy prosím ještě výše, ale relativně k mému dřívějšímu příspěvku níže popsaným přístupem. |
||
RastyAmateur Profil |
#8 · Zasláno: 21. 11. 2016, 20:18:06
mckay:
Dobré vědět :) stále ovšem doporučuji vytvářet nějaký output v PHP a ten si nechávat vypisovat. Jedině tak zjistíš, kde je chyba. |
||
_fantomas Profil |
Tak už mi to relativne ide ale php nejde
php som upravil na require_once '../../../engine/manager/Database.php'; $data = Database::fetch('SELECT * FROM `cart`'); print_r($data); a v konzole to napíše <br /> <b>Fatal error</b>: Call to a member function prepare() on null in <b>C:\xampp\htdocs\engine\manager\Database.php</b> on line <b>68</b><br /> na riadku 68 mám public static function fetch($sql, $parameters = array()) { $result = self::$db->prepare($sql); $result->execute($parameters); return $result->fetch(PDO::FETCH_ASSOC); } Problém som už vyriešil vdaka |
||
RastyAmateur Profil |
#10 · Zasláno: 21. 11. 2016, 20:54:00
_fantomas:
Tak já tady vypisuji sloh o tom, kde máš chybu a ty si na to přijdeš sám, jako vážně? :D Btw: Snažte se zajistit, aby po vyřešení vašeho problému bylo z diskuse zřejmé, jak byl vyřešen. |
||
Časová prodleva: 8 let
|
0