Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedon tallentaminen ajax

manninen [22.11.2011 13:11:55]

#

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!

Lebe80 [22.11.2011 13:39:29]

#

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/default.html

manninen [22.11.2011 15:04:04]

#

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!

Lebe80 [22.11.2011 15:29:17]

#

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.

manninen [22.11.2011 15:49:11]

#

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.

Lebe80 [22.11.2011 15:57:05]

#

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ä.

http://getfirebug.com/network

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta