login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP AND JS] Bevestiging en opdracht uitvoeren

Offline tomate - 22/08/2008 21:16
Avatar van tomateLid Hy,

Hoe kun je zoiets bereiken:
- Je klikt op een icoontje
- Dan krijg je een JS popupje
- Als je op het popupje op OK of Ja klikt wordt een opdracht uitgevoerd

De eerste twee zijn geen probleem, maar ik weet niet hoe je als je het popupje(Alert window) bevestigt een opdracht uitgevoerd word. 

7 antwoorden

Gesponsorde links
Offline thomasje - 22/08/2008 21:51
Avatar van thomasje MySQL beginner dat kan je ook doen met een bestand je laten doorsturen naar een bestand dat de actie uitvoert.
Offline Echron - 22/08/2008 22:14 (laatste wijziging 22/08/2008 22:41)
Avatar van Echron Grafische interesse Of Ajax (geen pagereload)
Dan gebeurt de opdracht achter de schermen maar je kunt je pagina uiteraard laten wachten op een antwoord voor je iets anders kunt doen.

Of bedoel je hoe je het antwoord moet opvangen?
Dit kan via een confirm venster
  1. <script type="text/javascript">
  2. var answer = confirm("Do you want continue?")
  3. if (answer)
  4. alert("You said: Ok")
  5. else
  6. alert("You said: Cancel")
  7. </script>


Edit: fout aangepast (na confirm mag er geen dubbele punt staan en confirm met kleine letter)

Is het beter om er window. voor te zetten of maakt dit niets uit?
Offline Stijn - 22/08/2008 22:21
Avatar van Stijn PHP expert @Echron: je code is fout!

  1. var answer = window.confirm("...");
  2. //answer == true als gebruiker op ja klikt
  3. //false als hij op annuleren heeft geklikt
Offline tomate - 22/08/2008 23:41
Avatar van tomate Lid Maar misschien ben ik onduidelijk geweest, maar ik begrijp nog altijd niet hoe je dan een opdracht in PHP uitvoerd. bv: Als je Ja klikt voert hij de mysql query uit.
Offline Echron - 22/08/2008 23:52 (laatste wijziging 23/08/2008 00:02)
Avatar van Echron Grafische interesse Dit doe je via een javascriptfunctie die ajax gebruikt om een phpbestand aan te spreken. Hieronder vind je normaal alles wat je nodig hebt (ik heb deze functies rap uit stukken van mijn code geschraapt maar op het eerste zicht bevat het alles wat je nodig hebt)

Heb je nog nooit met ajax gewerkt dan raad ik je aan om eens een tutorial te zoeken die uitlegt wat ajax is en wat je ermee kan doen.

Hieronder 2 functies, de eerste is nodig om de HTTPHandler op te bouwen, de 2e functie (executePhpfile) zal de ajax opdracht uitvoeren.

In deze regel:
XMLHTTPObject.open('POST', 'bestand.php', true);

pas je bestand.php aan naar het bestand waarin je de query zet. Ik heb deze functie een post laten doorsturen met 1 parameter(parameterA) omdat je bv kan meegeven welke query er moet uitgevoerd worden, er kunnen natuurlijk oneindig veel parameters meegegeven worden. Die moet je op de laatste regel
XMLHTTPObject.send('parametera=' + parameterA + '');

concatineren zoals je een GET string zou maken(wat is de juiste benaming weer?).

Mijn uitleg is zeer kort en hierdoor leer je niets bij ik weet het, maar om alles van ajax uit te leggen bestaan er zeer goeie tutorials.

  1. function createHTTPHandler(){
  2. httphandler = false;
  3. /*@cc_on @*/
  4. /*@if (@_jscript_version >= 5)
  5.   // JScript gives us Conditional compilation, we can cope with old IE versions.
  6.   // and security blocked creation of the objects.
  7.   try {
  8.   httphandler = new ActiveXObject("Msxml2.XMLHTTP");
  9.   } catch (e) {
  10.   try {
  11.   httphandler = new ActiveXObject("Microsoft.XMLHTTP");
  12.   } catch (E) {
  13.   httphandler = false;
  14.   }
  15.   }
  16.   @end @*/
  17. if (!httphandler && typeof XMLHttpRequest!='undefined') {
  18. httphandler = new XMLHttpRequest();
  19. }
  20. return httphandler;
  21. }
  22. function executePhpfile(parameterA){
  23.  
  24.  
  25. var XMLHTTPObject = createHTTPHandler();
  26. XMLHTTPObject.open('POST', 'bestand.php', true);//pas hier bestand.php aan naar je eigen phpbestand met query
  27. XMLHTTPObject.onreadystatechange=function() {
  28. if (XMLHTTPObject.readyState==4) {
  29.  
  30. var resultaat = XMLHTTPObject.responseText;
  31. //dit is wat de php pagina parst, je kunt je pagina bv een true laten parsen bij succes en dit gebruiken om de gebruiker een bericht te tonen als het de bewerking gelukt is of niet.
  32.  
  33.  
  34. }
  35. }
  36.  
  37. XMLHTTPObject.setRequestHeader("Cache-Control", "no-cache");
  38. XMLHTTPObject.setRequestHeader("X_USERAGENT", "MijnAjaxApplicatie");
  39. //Post:
  40. XMLHTTPObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  41. XMLHTTPObject.setRequestHeader('Connection', 'close');
  42. XMLHTTPObject.send('parametera=' + parameterA + ''); //hier kun je de parameters via post doorsturen, concatineren gebeurt zoals in een get string met de &
  43.  
  44. }
Offline tomate - 23/08/2008 00:33
Avatar van tomate Lid Ik zal het proberen 
Offline JBke - 23/08/2008 08:39 (laatste wijziging 23/08/2008 08:53)
Avatar van JBke PHP gevorderde jquery en ajax the easy way:

http://www.sitepoint.com/article/ajax-jquery
http://www.ajaxrain.com
http://www.ajaxian.com/

stukje javascript voorbeeld om een ajax actie uit te voeren, dit gedeelte bevat zowel ajax request als response en error zetting.
Dit geld enkel om je de werking aan te tonen.
opgelet: ik gebruik nog wel een eigen extensie op het framework zowel javascript als php. Waar SN voorstaat is van eigen framework 

  1. removeDelivery: function(delivery_id, product_id, fiche_id) {
  2. var result = window.confirm('Bent u zeker dat u permanent wil verwijderen?\nOPGELET DEZE ACTIE IS ONOMKEERBAAR!');
  3. if (result) {
  4. SN_Utils.hideFormErrors('adddelivery_'+product_id+'_formerrors');
  5. SN_Utils.hideActionResult('adddelivery_'+product_id+'_actresult');
  6.  
  7. var ajaxerr = 'Er is een fout opgetreden bij het permenent verwijderen van de levering.';
  8. SN_Utils.ajaxBlock({element: 'adddeliveryform_'+product_id, loadtext: 'Levering word permanent verwijderd',
  9. loadtextcss: {backgroundColor: 'transparent', width: '100%', height: '100px', margin: '0px'}});
  10.  
  11. $j('#adddeliveryform_'+product_id+' .delivery_save_btn').removeAttr('disabled');
  12. $j('#adddeliveryform_'+product_id+' .delivery_save_btn').removeClass('disabled');
  13.  
  14.  
  15. $j.ajax({
  16. type: 'POST',
  17. dataType: 'json',
  18. url: '/fiche/products/removedelivery/?id='+delivery_id+'&fid='+fiche_id,
  19. success: function(resp){
  20. $j('#adddeliveryform_'+product_id).unblock();
  21. if (typeof(resp) == 'object') {
  22. if (resp.result.status == 1) {
  23. Fiches.loadProducts(resp.data.id, true, resp.data.pid);
  24. } else if (resp.result.status == 2) {
  25. SN_Utils.renderFormErrors('adddelivery_'+product_id+'_formerrors', resp.data.verrors);
  26. } else {
  27. SN_Utils.ajaxError(ajaxerr, resp.result.msg);
  28. }
  29. } else {
  30. SN_Utils.ajaxError(ajaxerr, resp);
  31. }
  32. },
  33. error: function(req) {
  34. SN_Utils.ajaxError(ajaxerr, req.responseText);
  35. }
  36. });
  37. return false;
  38. }
  39. return false;
  40. },


het php gedeelte:

  1. <?php
  2. public function removeDeliveryAction() {
  3.  
  4. // Check if ajaxrequest
  5. $this->isXmlHttpRequest();
  6.  
  7. // Disable view renderer
  8. $this->_helper->viewRenderer->setNoRender();
  9.  
  10. // Init
  11. $LdefaultErrMsg_string = 'Er is een fout opgetreden bij het permenent verwijderen van de levering.';
  12.  
  13. $LdeliveryID_guid = $this->getRequest()->getQuery('id');
  14. $LficheID_guid = $this->getRequest()->getQuery('fid');
  15.  
  16. // Get record
  17. require_once('Deliveries.php');
  18. $LdeliveryTable_obj = new Deliveries();
  19. $LdeliveryDataRow_obj = $LdeliveryTable_obj->fetchRow("id = '$LdeliveryID_guid'");
  20.  
  21. // Redirect if not exists
  22. if (!$LdeliveryDataRow_obj) {
  23. $this->notFound($LdeliveryID_guid, array('record' => 'Levering', 'object' => 'Delivery'));
  24. }
  25.  
  26. // Set ajax data
  27. $this->setAjaxData('id', $LficheID_guid);
  28. $this->setAjaxData('pid', $LdeliveryDataRow_obj->product_id);
  29.  
  30. // Archive
  31. if ($LdeliveryDataRow_obj->delete(true)) {
  32. $this->setAjaxResult(self::RES_OK);
  33. $this->setResult('custom', 'Levering ' . $LdeliveryDataRow_obj->toString() . ' werd permanent verwijderd.');
  34. } else {
  35. $this->setAjaxResult(self::RES_ERROR, self::RES_TYPE_PROCESSERROR, $LdefaultErrMsg_string . '<br/> could not be removed.');
  36. }
  37. // Set the Response for the user testing this or for the AJAX handler on the client.
  38. $this->getResponse()->setHeader('Content-Type', 'text/plain');
  39. $this->getResponse()->setBody($this->getAjaxResponse());
  40.  
  41. }
  42. ?>


success.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.215s