South_Bridge Skrevet 15. juli 2008 Del Skrevet 15. juli 2008 Spurte i PHP seksjonen men fikk igrunn ikke et klart svar, så da spør jeg her og! Jeg har en variabel i java script: <script type="text/javascript"> var testVar = "JEG ER EN TEST"; </script> <input type="submit" value="Submit"> Hvordan får jeg dette over til php? Scriptet over er litt mer omfattende og er basert på Yahoo UI hvor jeg har laget en nice listbox med flere kollonner. Y UI er javascript og meninga er at valgte element skal slettes fra en databasen (med php). Siden det er php må det gjøres på postback. Men igjen: hvordan henter jeg testVar på postback / hvordan lagrer jeg innholdet i en phpvariabel / hva er den enkleste metoden ?? Lenke til kommentar
loathsome Skrevet 15. juli 2008 Del Skrevet 15. juli 2008 AJAX. Anbefaler å bruke jQuery-biblioteket til dette. http://jquery.com/ Lenke til kommentar
magicgunnar Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 For å overføre en variabel fra klienten (javascriptet på brukerens maskin) til serveren, må du bruke et post eller et get kall. Det smidigste er nok Ajax som allerede er nevnt. Ajax bruker et post eller et get-kall uten at brukeren merker det. Hvis du vil lære hvordan du bruker Ajax kan du lese her: http://www.w3schools.com/ajax/default.asp her finner du også kode du kan klippe og lime fra. Alternativet er et post eller get kall til server, som overfører variabelen din og tar deg til en ny side eller refresher siden din, det er sannsynligvis det enkleste, men definitivt ikke det mest brukervennlige. Lenke til kommentar
South_Bridge Skrevet 16. juli 2008 Forfatter Del Skrevet 16. juli 2008 Finnes det ikke en metode som ikke bruker Ajax? Dette er i sammenheng med et prosjekt, og har en deadline. Jeg kan heller i ettertid vurderer å bruke Ajax. Lenke til kommentar
hishadow Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) Har ikke testet Yahoo UI, men du må muligens innom disse for å få dette igang: * xmlhttprequest - http://developer.yahoo.com/yui/connection/ for å sende data * json - http://developer.yahoo.com/common/json.html for å serializere dataene du vil overføre til server. Har ikke Yahoo UI noe ferdig oppsett for event handling ved submit? Endret 16. juli 2008 av hishadow Lenke til kommentar
___ Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) Finnes det ikke en metode som ikke bruker Ajax? Dette er i sammenheng med et prosjekt, og har en deadline. Jeg kan heller i ettertid vurderer å bruke Ajax. Hvis du bruker prototype.js eller jQuery, vil det å sende av gårde variabelen være gjort med to-tre linjer. new Ajax.Request('/etphpscript.php', { method: 'get', parameters: { var: testVar } } ); Dette eksempelet bruker prototype og sender av gårde en GET på følgende form: /etphpscript.php?var=<innholdet_i_testVar> Edit Med Yahoo UI (som jeg forøvrig aldri har brukt) er det tydeligvis enda enklere: YAHOO.util.Connect.asyncRequest('POST', 'script.php', callback, 'var=' + testVar); callback-variabelen peker til et object, i dette eksempelet på formen: var callback = { success: { ... }, failure: { ... }, scope: { ... } }; Hilsen Werner Endret 16. juli 2008 av wernie Lenke til kommentar
siDDis Skrevet 18. juli 2008 Del Skrevet 18. juli 2008 Eg har skreve nokre ajax metoder for å sende postdata asynkront. Tatt frå min heimeside når ein bruker skriver ein kommentar til ein nyheitstittel // Hent data først frå formen var content = document.getElementById("comment_c").value; var postedBy = document.getElementById("postedBy_c").value; var topic = document.getElementById("topic_c").value; // Her bygger vi postdata streng buildPostData("content",content); buildPostData("postedBy",postedBy); buildPostData("topic",topic); buildPostData("news.id",args['news']); postData("http://olavgg.com/website_that_handles_postdata.gsp", getPostData()); //Opprett HTTPRequest objektet try { request = new XMLHttpRequest(); } catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { request = null; } } } // Send Postdata asynkront function postData(url, data) { request.open("POST", url, true); request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); request.onreadystatechange = function() { update(); }; request.send(data); } /* -------------------------------------------------------------- * Postdata functions. -------------------------------------------------------------- */ function buildPostData(postID, value) { if (this.postdata == null) this.postdata = ""; this.postdata = this.postdata + postID +"="+value+"&"; } function getPostData() { this.postdata = encodeFormData(this.postdata); return removeLastChar(this.postdata); } function resetPostData() { this.postdata = ""; } function encodeFormData(data) { var regexp1 = /%20/g; data = encodeURI(data).replace(regexp1,"+"); return data; } function update() { if (request.readyState == 4) { if(request.status == 200) { alert("Success!"); } } Ikkje optimal kode, men fungerer greit. Lenke til kommentar
loathsome Skrevet 18. juli 2008 Del Skrevet 18. juli 2008 ... ELLER man kan gjøre det med 3 linjer om man bruker jQuery. Lenke til kommentar
grimjoey Skrevet 22. juli 2008 Del Skrevet 22. juli 2008 Eller hvis du tenker litt utenfor boksen kan du la javascript sette en cookie som php kan lese ved neste request. eller: <script type="text/javascript"> var testVar = "JEG ER EN TEST"; </script> <form id="myForm"> <input type="hidden" name="testVar" id="testVar" value=""> <input type="button" value="Submit" onclick="document.getElementById('testVar').value = testVar; document.getElementById('myForm').submit()"> </form> Lenke til kommentar
ilpostino Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 (endret) du kan også sende data fra javascript til php ved hjelp av cookies. ha gjort det selv på hjemmesiden min og kan poste koden som trengs når jeg kommer hjem hvis du vil ha. edit: leif was here. Endret 23. juli 2008 av ilpostino Lenke til kommentar
___ Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 (endret) du kan også sende data fra javascript til php ved hjelp av cookies. ha gjort det selv på hjemmesiden min og kan poste kosen som trengs når jeg kommer hjem hvis du vil ha. Så det er altså masse kos som skal til for å sende data fra javascript til PHP? Kan du forklare hvordan dette virker? Hva skal koses med for at det skal fungere? Werner Endret 23. juli 2008 av wernie Lenke til kommentar
grimjoey Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 <script type="application/x-javascript"> // setCookie fra www.w3schools.com function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } var testVar = "JEG ER EN TEST"; setCookie('testVar', testVar, null); </script> leses fra php med $_COOKIE('testVar') etter neste request. Lenke til kommentar
TheClown Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Ideen ovenfor her med cookie virket enkel og grei. Hadde gått for den. Lenke til kommentar
South_Bridge Skrevet 26. juli 2008 Forfatter Del Skrevet 26. juli 2008 Ideen ovenfor her med cookie virket enkel og grei. Hadde gått for den. Det var tanken, utrolig mye bra tilbakemelding på denne tråden! takker Lenke til kommentar
Twinflower Skrevet 17. desember 2008 Del Skrevet 17. desember 2008 Hva om jeg har 9 streng-variabler som jeg skal sende til*bake* til javascript fra php? PHP-scriptet blir kjørt av AJAX, og jeg får vanligvis tilbake infoen i form av responseText. Problemet er at jeg i utgangspunktet hadde en ferdig HTML-bit i den teksten, noe som får IE til å kalle noe så generelt som en "runtime error", når jeg putter den inn vha innerHTML. Så, løsningen skal være JSON, noe jeg aldri har vært borti. Det gjelder forsåvit AJAX også, som jeg prøvde første gang i kveld. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå