Ongelmani on seuraavanlainen. Minulla on kenttä/kenttiä johon kirjoittaessa haluan tiedon tallentuvan sitä mukaa kun painan merkkiä. Saan tiedon kulkemaan aina DataHandler functiolle, mutta siitä eteenpäin se ei mene. Huomaisiko kukaan koodistani missä menee pieleen. Onko ongelma js, vai php osuudessa.
<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> $("input").keyup(function(e){ var code = (e.keyCode ? e.keyCode : e.which); if(code == 13) { alert('jee'); //Enter keycode } var id = $(this).attr('id'); var name = $(this).attr('name'); var data = $(this).attr('value'); DataHandler(id, name, data); } ); function DataHandler(rivi, kentta, arvo){ var url = './inc/data_handler.inc.php'; alert(url); jQuery.ajax(url,{ data:{ "t":"PaivitaRekisterinTietoja", "rivi": rivi, "kentta": kentta, "data": arvo }, success: function(data, textStatus,jqXHR){ alert('Load was performed.' + data); }, error:function(jqXHR, textStatus, errorThrown){ alert('Load was not performed.'); }} ); alert(rivi); } </script>
<?php require_once('./inc/sessio.inc.php'); require_once('./inc/sessio_login.inc.php'); require_once('../class/connect.class.php'); $connection = new Connection(); $conn = $connection->connect(); switch($_REQUEST['t']){ case 'PaivitaRekisterinTietoja': UpdateRegister($conn); break; default: echo 'Tuntematon toiminto'; } function UpdateRegister($conn){ try{ $sql = $conn->prepare("UPDATE asiakastiedot SET arvo = ? WHERE asiakasnumero = ? AND tietue = ?"); $sql->execute(array($_POST['data'], $_POST['rivi'], $_POST['kentta'])); } catch(PDOException $e){ die("ERROR: " . $e->getMessage()); } } ?>
Mod. vaihtoi oikeat kooditagit!
Oletko katsonut esim. javascriptin virhekonsolia ja/tai tarkistanut vaikkapa tuossa data_handler.inc.php -tiedostossa $_REQUEST-taulukon sisällön?
Esim. Firefoxin Firebugilla voi juuri katsella ajaxilla ladattuna sivuja helposti.
ps.
miksi syntaksi jQuery.ajax(...) eikä $.ajax(...) ?
edit:
En nyt tiedä mihin olet tuota laittamassa, mutta tuntuu aika oudolta, että tallennat koko ajan dataa, eli omaan järkeen kävisi kyllä se, että x sekunnin välein tallennetaan "varmuuskopio" esim. pitkästä tekstikentästä tai että lyhyemmissä kentissä kentän arvo tallennetaan kun editointi lopetetaan, mutta jokaisen merkin jälkeen voi palvelinkin olla aikamoisen kuorman alla, jos kirjoittaja kirjoittaa esim. yhtä nopeasti kuin minä, vaikken mikään pikakirjoittaja olekaan.
Tässä vielä vähän valmis plugari esimerkiksi:
http://www.appelsiini.net/projects/jeditable
demo:
http://www.appelsiini.net/projects/jeditable/
Lebe80 kirjoitti:
Oletko katsonut esim. javascriptin virhekonsolia ja/tai tarkistanut vaikkapa tuossa data_handler.inc.php -tiedostossa $_REQUEST-taulukon sisällön?
- Nämä näyttävät tyhjää
Tiedon tallentamisessa olet ihan oikeassa! Mistä jeditableen vaadittavat js kirjastot mahdollisesti löytyvät.
Mod. lisäsi lainaustagit, kannattaa käyttää lainauksissa!
manninen kirjoitti:
Mistä jeditableen vaadittavat js kirjastot mahdollisesti löytyvät.
Kiitos kun jaksoit lukea antamieni linkkien sisältä löytyvät muutama ylintä riviä.
http://www.appelsiini.net/projects/jeditable
Jeditable kirjoitti:
For those in hurry download latest source or minified.
For bleeding edge version check GitHub.
Anteeksi!! Rupesin niin innolla demoamaan ja katselemaan sieltä niitä muita osioita. Kiitoksia vaivannäöstäsi. Tein väliaikaisen ratkaisun ja päätin, että en tallenna jokaisen painalluksen jälkeen vaan luon kyseisen kentän perään tallenna napin sen jälkeen kun käyttäjä on aktivoinut kentän. Tästä palaankin alkuperäiseen ongelmaan. Jostain kumman syystä näyttäisi, että ajax ei lataa sivua.
Ennen kuin teet muuta, niin:
http://getfirebug.com/
Ja kun Firebug on asentunut, niin katselet firebugin Network-ikkunaa löytääkö selain tuota "data_handler.inc.php" -tiedostoa vai onko kyseisen sivun osoite väärä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.