Archief - AJAX: pagina opnieuw laden

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

EyeBallz

Legacy Member
ik heb juist mijn eerste klein ajax-project afgewerkt.
het javascript gedeelte:
Code:
function verwijder(lesid)
		{        
    	var string = "verwijderles.php?lesid="+lesid;
    
		request.open("get",string,true);
		request.send(null);
		}
		
	function httpRequest(lesid)
		{
		if(window.XMLHttpRequest)
			{
			request = new XMLHttpRequest();
			}
		if(request)
			{
			verwijder(lesid);
			}
		else
			{
			alert("Uw browser ondersteunt geen AJAX, gelieve deze website op te roepen met een recentere browser.");
			}
		}

verwijderles.php:
PHP:
<?
include('include/constants.php');
$conn = mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db("rooster");

$lesid = $_GET["lesid"];
mysql_query("DELETE FROM Lessen WHERE LesID = \"$lesid\"");
?>

nu mijn vraag:
als ik de functie httpRequest() uitvoer wordt de entry inderdaad uit mijn database verwijderd, maar die wijziging wordt niet weergegeven in de pagina die de database weergeeft totdat ik manueel refresh (F5).
hoe krijg ik het voor elkaar dat de wijziging onmiddellijk wordt weergegeven?

Smoerf

Legacy Member
je object aanspreken mbv javascript en clientside je content wijzigen.

Best is dat je een httpRequest doet, en een response returnt.
Dit houdt schematisch in dat je:
1) een request triggered
2) een serverside pagina uitvoert via je http object
3) een response terugkrijgt
4) aan de hand van die response je content wijzigt

*Opmerking

Waar maak jij een http object aan? En vooral, hoe doe je dit? Is het cross browser?

meestal gebruik ik volgende code om een ajax request te doen:
Code:
// http object aanmaken en bijhouden of er al dan niet een request bezig is
   var http = getHTTPObject();
   var isWorking = false;
 
// functie om je HttpObject cross browser aan te maken
   function getHTTPObject() {
     var xmlhttp;
     /*@cc_on
     @if (@_jscript_version >= 5)
       try {
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
         try {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (E) {
           xmlhttp = false;
         }
       }
     @else
     xmlhttp = false;
     @end @*/
     if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
         xmlhttp = new XMLHttpRequest();
       } catch (e) {
         xmlhttp = false;
       }
     }
     return xmlhttp;
   }

// functie om data te versturen
   function storeData(){
     if (!isWorking && http) {
        http.open("GET", 'script.php?param=' + param_value, true);
        // als request gedaan is moet hij deze code uitvoeren
        http.onreadystatechange = handleStoreData;
        isWorking = true;
        http.send(null);
     }
   }
  
  function handleStoreData(){
     if (http.readyState == 4) {
        if (http.responseText.indexOf('invalid') == -1) {
              // de response text opslaan in een var
			  results = http.responseText;
			  if (results){
			      // als er een result is (kan true/false zijn, kan ook html code zijn) iets doen, in dit geval een alert van de results
				     window.alert(results);
			  }
           isWorking = false;
		  }
	  }
  }
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan