login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Jquery arjax php class

Offline beronne - 28/10/2012 22:13 (laatste wijziging 28/10/2012 22:14)
Avatar van beronneLid Beste Lezers,

Ik zit met het volgende probleem:

Ik heb 2 select vakken in de eerste staat data uit de database nu wil ik
dat zodra je in het eerste select vak iets hebt gekozen dat aan de hand
van ajax de juiste waarde wordt opgehaald voor het 2de select vak.

Ik weet wel hoe ik dit moet doen maar ik weet niet hoe ik een
variable in js kan sturen naar een functoin in mijn class(php) waar ik die waarde
kan gebruiken in dit geval een id en dan de juiste waarde ophalen en weer terug sturen

ik heb nu dit:
  1. $(document).ready(function() {
  2.  
  3. $("#product").change(function(){
  4. var id = "id="+$(this).val();
  5. //alert(id);
  6.  
  7. $.ajax({
  8. type: "POST",
  9. url: "classes/class_Garage.php",
  10. data: id,
  11. cache: false,
  12. success: function(data){
  13. $("#type_product").html(data)
  14. }
  15. });
  16. });
  17. });


Zoals je kan zien moet ik de data: id kunnen gebruiken in een functie binnenin mijn class: class_Garage.php
maar als het mij lukt om deze var in de class te gebruiken weet ik niet
of ik gewoon een return kan doen zodat de waarde terug komt in success maar eerst ervoor zorgen dat ik var id in mijn class kan gebruiken.

Ik hoop dat iemand voor mij een tip heeft!

3 antwoorden

Gesponsorde links
Offline Kevin - 28/10/2012 22:19 (laatste wijziging 28/10/2012 22:21)
Avatar van Kevin Crew Ajax/REST Je hebt geen HTML code hierbij staan?
Het feit dat je change gebruikt gok ik op een select-tag. Gebruik daarbij dan:
  1. var id= "id="+ $("#product option:selected").attr('value');

Ik ga er ook van uit dat je select-tag de id "product" heeft. Met jQuery moet je dan nog je child item aanspreken (wat een option-tag is) en nog specifieker zeggen welke ":selected" is.
Spreek liever het attribuut value aan bij een select. .val() is eerder voor text fields.

Nu zou je post toch al moeten werken.
Voor het wegschrijven van je output, geen idee. Je zou hiervoor toch wat code moeten geven.

MvG
Offline beronne - 28/10/2012 22:38
Avatar van beronne Lid Het wegschrijven van me output ben ik nog mee bezig ik heb net ergens gelezen dat je niet rechtstreeks een variable in jquery naar een class functie kunt schrijven maar daarvoor een
tussenbestand voor nodig hebt. Dus bijvoorbeeld je stuurt data naar index.php daar zorg je doormiddel van $_GET of $_POST dat je die waarde naar de class stuurt dan een return doet terug naar index.php die moet er dan weer voor zorgen dat hij terug komt naar de success:function hier ben ik dus nu mee aan het spelen
Offline ArieMedia - 28/10/2012 23:07 (laatste wijziging 28/10/2012 23:14)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
beronne schreef:
Het wegschrijven van me output ben ik nog mee bezig ik heb net ergens gelezen dat je niet rechtstreeks een variable in jquery naar een class functie kunt schrijven maar daarvoor een
tussenbestand voor nodig hebt. Dus bijvoorbeeld je stuurt data naar index.php daar zorg je doormiddel van $_GET of $_POST dat je die waarde naar de class stuurt dan een return doet terug naar index.php die moet er dan weer voor zorgen dat hij terug komt naar de success:function hier ben ik dus nu mee aan het spelen
Ik vind je omschrijving erg vaag, maar ik denk te snappen wat je zegt.

Het feit dat je die "omweg" moet maken is heel simpel. Een klasse is slechts een blauwdruk, maar het bevat nog niks. Een klasse zal nooit wat uitvoeren, totdat je er een object van maakt. In dit object kan je enkel en alleen public methoden en attributen benaderen.

Bijv:
  1. <?php
  2. class Auto {
  3. protected $autoNaam;
  4. protected $wielen;
  5.  
  6. public $merk;
  7.  
  8. public function __construct($autoNaam) {
  9. $this->autoNaam = $autoNaam;
  10. }
  11.  
  12. public function setAantalWielen($i) {
  13. if(is_numeric($i)) {
  14. $this->wielen = $i;
  15. }
  16. }
  17.  
  18. public function getNaam() { return $this->autoNaam; }
  19.  
  20. public function getAantalWielen() { return $this->wielen; }
  21. }
  22. ?>


Voordat ik iets kan doen met deze klasse moet ik er eerst een object van maken. Ik heb namelijk alleen een blauwdruk, de auto zelf bestaat nog niet. Dit is hetzelfde als jou garage.

auto.php
  1. <?php
  2. require_once 'autoclass.inc.php';
  3.  
  4. $auto = new Auto("Swift");
  5. $auto->setAantalWielen(4);
  6. $auto->merk = "Suzuki";
  7.  
  8. echo "Ik heb een ". $auto->getNaam() . " van het merk ". $auto->merk ." met ". $auto->getAantalWielen() ." wielen";
  9. ?>


en voilla, we hebben een auto. Via jQuery (of gewoon js) kan je dit nu aansturen, echter zal je auto.php moeten ombouwen..

  1. <?php
  2. require_once 'autoclass.inc.php';
  3.  
  4. if(isset($_GET['merk']) && isset($_GET['wielen'])) {
  5. $auto = new Auto($_GET['merk']);
  6. $auto->setAantalWielen($_GET['wielen']);
  7. $auto->merk = "Suzuki"; // dit weten we gewoon, wij zijn een suzuki dealer xD
  8.  
  9.  
  10. echo json_encode("Ik heb een ". $auto->getNaam() . " van het merk ". $auto->merk ." met ". $auto->getAantalWielen() ." wielen");
  11. }
  12. ?>

En voilla, we hebben een bestand wat terug kan praten, klaar voor ajax requests.

Zoals je ziet gebruik ik json_encode, omdat jij meteen de teruggegeven html gelooft kan jij dit in dit geval weglaten. Ik raad je echter wel aan om wat studie te doen om het gebied json.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s