variabelen automatisch verzenden naar php

Status
Niet open voor verdere reacties.

koeikiemonster

Gebruiker
Lid geworden
26 feb 2008
Berichten
26
Hallo, ik zit met een probleem:

Ik wil variabelen uit javascript naar php verzenden. Maar: dit moet gebeuren zonder dat iemand op een knopje hoeft te klikken. Hoe doe ik dit?

Help mij!!! :(
 
"Op een knopje drukken" is een event, de actie staat daar los van. Aannemend dat het je al is gelukt variable te verzenden als er op een knopje is gedrukt hoef je er alleen voor te zorgen dat je code in een andere event handler zet.

Wanneer wil je precies dat er variables verstuurd worden? Want ik neem niet aan dat je elk moment bezig wilt zijn variables te versturen...
 
dan kun je je code gewoon in een javascript ebstand zetten en dat aan je pagina toevoegen, of zelfs gewoon in de head of body plakken.
 
Ik ben vrij nieuw met javascript dus graag iets meer uitleg... :rolleyes:

p.s. het is de bedoeling dat op de pagina waaruit de variabel wordt verzonden geen php wordt gebruikt.
 
Laatst bewerkt:
Ik ben vrij nieuw met javascript dus graag iets meer uitleg... :rolleyes:

p.s. het is de bedoeling dat op de pagina waaruit de variabel wordt verzonden geen php wordt gebruikt.


Dit is goed mogelijk. Het kan ook op het moment dat de pagina geladen wordt.

Ik heb mijn vraagtekens bij het versturen van data gelijk na het laden van de pagina, dan kan je het net zo goed in PHP doen tijdens de HTTP Request van de HTML.
(De pagina moet immers opgevraagd worden van de server).
Maar als het is wat je wilt dan gebruik je de zogenaamde AJAX techniek. Javascript maakt dan een eigen HTTP Request naar de server.


Wanneer je iets uit wil laten voeren direct na het laden van de pagina voeg je een functie toe aan de onload event van het window object.
De meest simpele methode is

Code:
window.onload = functie;

Dan zal op het moment dat de pagina geladen is, de functie gelijk aangeroepen worden.

Voorbeeld:
Code:
 window.onload = verstuurData; 

function verstuurData() {

 //maak Ajax request 

//verstuur Ajax request

//doe wat met het antwoord van de server
}

Je gebruikt bij het toekennen van een functie geen haakjes () Het is dus niet:
Code:
[COLOR="DarkRed"]Dit is fout[/COLOR]
window.onload = functie();

Het enige probleem is dat deze functie de onload functie overschrijft , dus wanneer deze declaratie meerdere keren voor komt in je pagina werkt alleen de laatste declaratie!


Code:
window.onload = functie1;
....
window.onload = functie2;

In het bovenstaande voorbeeld wordt dus alleen functie2 uitgevoerd. Er zijn gelukkig AddEvent functies geschreven die je zo kan toevoegen aan je eigen code en die overschrijven de onload event dan niet, maar voegen je functies toe.




PS: PHP wordt niet uitgevoerd in de pagina van de gebruiker, maar op de server. Het resultaat is meestal uitvoer in een HTML pagina, maar dat hoeft ook niet altijd.
 
Laatst bewerkt:
Over AJAX aka HTTP Request

Hier heb ik een javascript dat ik gebruikt heb voor het uitvoeren van HTTP Requests, misschien heb je er wat aan.

HttpRequester.js

Het werkt als volgt. Je voegt dit script toe aan je html en je maakt een eigen js file dat je ook toevoegt aan je html. Aan het HttpRequester bestand hoef je niks te veranderen.

In je eigen js file doe je iets als:
Let wel, gebruik liever niet de window.onload= declaratie (want wanneer hij in andere scripts voorkomt die je gebruikt, doen die het niet meer), maar even ter illustratie.

PHP:
window.onload = maakHTTPRequest;

function maakHTTPRequest() {
 //Maak een nieuw HttpRequester object aan
 httpRequester = new HttpRequester(); 
 //Vervolgens ontvangt het object dat ik gemaakt heb een verzameling, die moet je dus maken. Ik leg later even uit hoe ze heten en hoe je ze kan gebruiken. Maar ziet er zo uit:
var req = {api:'server',funct:'bezoekerToevoegen',lang:'php',data:''};
//Met de verzameling roep je de requestXmlHttp functie van de HttpRequester aan en een eventueel antwoord van de server sla je op in de variabele antwoord.
var antwoord = httpRequester.requestXmlHttp(req);
}

Zo simpel is het, je kan dit eigenlijk letterlijk kopiëren elke keer als je het wil gebruiken. Het enige lastige (wat veranderlijk is) is het req object. Ik zal even uitleggen wat er in dat object kan staan.

De httprequester doet eigenlijk niets anders dan een pagina aanroepen. Dat kan bijvoorbeeld een php pagina zijn.

  1. api

    Het heet api omdat ik het gebruikt heb in een zogenaamde mashup, maar wat het werkelijk is in dit verband is de map (relatief aan je html-file) waar het bestand staat dat je aan wil roepen. In mijn voorbeeld staat het bestand in de map; server. Wanneer je api leeg laat of niet gebruikt, dan zoekt het request in dezelfde map als waar je html-bestand staat.

  2. funct

    funct is de afkorting van functie. Maar komt eigenlijk neer op de naam van het bestand dat je aan wil roepen. Wil je bijvoorbeeld het php bestand login.php aanroepen. Dan is de funct:'login'.

  3. lang

    lang voor language is de taal van het server bestand, maar slaat dus eigenlijk enkel op de extension. Voor login.php is het dus lang:'php'. Wanneer je lang niet gebruikt is het standaard php.

  4. data

    data is iets lastiger tenzij je weet hoe een HTTP Request is opgebouwd. een HTTP Request is een vraag van je browser aan de server, of hij een bestand wil aanroepen en naar de browser wil versturen. In zo een request kan je data meesturen. Dat is niet anders dan een simpele string (zinnetjes) met een verdeler tussen verschillende termen en (&-teken) en tussen de termen en de waardes (=-teken).
    Data ziet er dus als volgt uit:

    naam=jan&huisdier=hond&hobby=voetbal

    Je kan dit in javascript heel simpel zelf opbouwen en dan meesturen door het in de verzameling aan mee te sturen als data.

    Voorbeeld:

    var gegevens = 'naam=jan&huisdier=hond&hobby=voetbal';

    en dan in de verzameling doe je data:gegevens.

  5. targ

    Deze hoef je zelden te gebruiken. Dat is wanneer het antwoord bijvoorbeeld alleen maar een tekstje zal zijn dat je ergens in je pagina in een element wil zetten. Wanneer je targ meegeeft zal het script het antwoord gelijk in dat html-element zetten met de id-tag die hetzelfde is als targ.

    Voorbeeld
    HTML:
    <p id='antwoord'> Hier zal straks het antwoord staan </p>

    Wanneer je het antwoord in dit voorbeeld wil laten verschijnen doe je targ:'antwoord'



Ik hoop dat je me een beetje begrijpt. :P Anders moet je het maar ergens proberen waar we mee kunnen kijken en de fouten er uit halen.
 
Laatst bewerkt:
Nou even ter verduidelijking: Het is de bedoeling dat ik een paar statestieken ( browser, screen.height, screen.width, enz) naar een php bestand verstuur die het op zijn beurt in een database zet. Op de pagina waar de bezoeker komt mag geen php staan. Zodat het ook op gratis site's als freewebs kan worden gebruikt.

Maar ik ben helaas niet erg goed in javascript.

Dus graag iets eenvoudiger
 
Laatst bewerkt:
"graag iets eenvoudiger"?? Ik vondt het een behoorlijk duidelijke uitleg. Nou kan het natuurlijk altijd dat je het niet snapt maar dan kun je beter bij het begin beginnen en eerst Javascript leren.

Overigens zie ik het nut niet van dit script beschikbaar maken op een server zonder PHP aangezien je toch PHP nodig zul hebben voor het verwerken van de opgestuurde data. Nou is er in PHP geen manier om de resolutie van een gebruiker te bepalen dus dat is een goede rede om Javascript te gebruiken, maar je kunt PHP niet uit de mix elimineren.

In dit geval is het gebruik van body.onload is niet nodig aangezien een script in de header ook gewoon meteen uitgevoerd wordt. Alleen als het belangrijk is dat de volledige pagina is geladen dient body.onload gebruikt te worden. Resolutie en user agent zijn al beschikbaar wanneer Javascript in de header uitgevoerd wordt.
 
Hm ja, ik geloof dat je niet cross-domain kan AJAXen zonder een server taal. Dus je idee gaat hoogstwaarschijnlijk niet werken.

Je kan zonder server taal ook niks opslaan op de server, dus je kan geen output file maken die zou kunnen dienen als brug. Je zou natuurlijk een frame kunnen openen van een site waar wel een server-taal aanwezig is en die deze data bij laten houden.
Ik geloof dat verborgen frames door google echter gezien worden als een vorm van 'fraude' en dit heeft invloed op je googlebaarheid. :P
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan