Avatar billede kaktus Nybegynder
15. juli 2008 - 23:20 Der er 45 kommentarer og
1 løsning

fra var til $var

Er lidt usikker på om det er her jeg skal stille spørgsmålet...

Vil gerne have en java var omsat til $var (php) og lidt frem og tilbage....

Har to filer der snakker via ajax, men jeg er kørt fast...
Prøv at kikke ker...
http://testkalender.sluk.dk/ajax-post/side1.php

vil gerne have en 'besked' tilbage til side 1 i form af en php variabel. (skal bruges til at lukke et vindue og sende bruger videre)
Vigtigt:Alt sammen uden sidereload
Avatar billede jakobdo Ekspert
16. juli 2008 - 05:49 #1
Uden reload af siden, kan du som sådan ikke sætte en variabel.
Du kan sætte variabler i en session eller lade javascript smide en besked.
Avatar billede w13 Novice
16. juli 2008 - 10:01 #2
Præcis. Når du modtager med JavaScript, får du det jo også som JavaScript-variable.
Avatar billede kaktus Nybegynder
16. juli 2008 - 10:20 #3
w13
Hvis jeg har forstået "programerings-sproget" og din kommentar rigtigt er det vel bare at "omsætte" JavaScript-variablen som side1 modtager til en PHP variabel stadig på side 1....
Det er netop det jeg ikke ved hvordan man gør og beder om hjælp til.....
Læs overskrift "fra var til $var"

Jeg formoder det er denne linie i side1 der modtager fra side2..
var namevalue=encodeURIComponent(document.getElementById("name").value)
MEN
som sagt ved jeg ikke hvordan man får proppet værdien i en PHP variabel....
Avatar billede w13 Novice
16. juli 2008 - 10:27 #4
Som Jakobdo også påpeger, kan du kun omsætte fra JavaScript til PHP ved sideload. Du bør nok - på den PHP-side som din AJAX kalder - gemme det i en Session.

Hvordan du så vil hente PHP-sessionen uden at reloade siden - ja, det er så et godt spørgsmål. =)
Avatar billede jakobdo Ekspert
16. juli 2008 - 10:38 #5
Uden reload, kan variablen hentes med et ajax kald igen.
Avatar billede w13 Novice
16. juli 2008 - 10:49 #6
Men så vil den jo alligevel ende i en JS-variable, går jeg ud fra. =)
Avatar billede jakobdo Ekspert
16. juli 2008 - 11:03 #7
Selvfølgelig! :o)
Med med ajax kan man jo kalde php script, som evt. gemmer eller noget.
Men det er jo nok bare et spørgsmål om at forstå problemet og bruge den rigtige løsning.
Avatar billede kaktus Nybegynder
16. juli 2008 - 11:04 #8
Uhhmm forvirret......
Jeg har prøvet det med $_SESSION, og som i siger kan det først bruges til noget efter reload.
Nå men måske det slet ikke kan lade sig gøre?
Det er jo da også en mulighed :-(
Avatar billede w13 Novice
16. juli 2008 - 11:15 #9
Med den metode, du bruger nu, vil man blive nødt til at bruge en JS-variable. Men det kan måske laves på en anden måde.
Avatar billede jakobdo Ekspert
16. juli 2008 - 11:21 #10
Men den besked du vil have frem, hvorfor ikke lade js klare det ?
Avatar billede kaktus Nybegynder
16. juli 2008 - 11:33 #11
Gerne for min skyld, men jeg er ikke god til java, men kan håndterer php til husbehov....
if (java varabel er sat){gør dit eller dat}....kunne bruges mener jeg, men aner ikke hvordan jeg gør det....
Avatar billede jakobdo Ekspert
16. juli 2008 - 11:34 #12
if(var) alert('hej');
Avatar billede w13 Novice
16. juli 2008 - 11:36 #13
if(var){
  //kommandoer her
}

Java er i øvrigt et helt andet sprog. ;)
Avatar billede kaktus Nybegynder
16. juli 2008 - 11:41 #14
Det må give det samme som hvis jeg på side 2 bruger
if ($name !="" || $age != ""){
echo "Hej";}
java alerten kommer dog i popup (mener jeg)
men det er ikke en besked på skærm jeg går efter, men en variabel der kan bruges til den videre programering
Avatar billede kaktus Nybegynder
16. juli 2008 - 11:42 #15
vil det sige at jeg i java kan....
if(var){
  sætte en php variabel her //kommandoer her
}
Avatar billede jakobdo Ekspert
16. juli 2008 - 11:48 #16
Jeg giver op... og melder mig ud af denne tråd.
Jeg føler jeg løber hovedet mod en væg igen og igen og det kan mit hoved ikke holde til i længden. :o)
Avatar billede w13 Novice
16. juli 2008 - 11:59 #17
I JavaScript (og ikke Java ;) kan du gøre det sådan her:

//Her er din AJAX-koden som henter PHP-variablen ud i en JavaScript-variable kaldet "var". Så nu ligger den i "var"! Du kan så teste, om variablen er blank, ved at bruge if-sætningen:

if(var){
  //kommendoer
}

Bemærk dog, at du ikke kan sætte en PHP-variable i den if-sætning. :) Hvis du vil gøre noget med PHP i if-sætningen, må du kalde en ny PHP-side ved hjælp af et nyt AJAX-kald.
Avatar billede kaktus Nybegynder
16. juli 2008 - 12:16 #18
ok jeg indrømmer det er lidt tungt for mig det her, og takker for jeres tålmodighed...so far....
vil det kunne lade sig gøre at sætte submit knappen til disabled på side1 hvis der kommer besked fra side2 (som har indsat poster i db)
d.v.s. med Java Script at ændre (på side1)
<input type="button" value="SEND" onClick="ajaxget()" />
til
<input type="button" value="SEND" disabled="disabled" onclick="ajaxget()" />
således at brugeren bliver forhindret i at submitte mere end én gang
Avatar billede w13 Novice
16. juli 2008 - 12:18 #19
Hvis du sætter et id på knappen, ja:

<input id="submit1" type="button" value="SEND" disabled="disabled" onclick="ajaxget()">

Så kan du med JavaScript køre kommandoen:

document.getElementById("submit1").setAttribute("disabled",true);

Og evt. smække den linje ind i fornævnte if-sætning.
Avatar billede kaktus Nybegynder
16. juli 2008 - 12:28 #20
var det sådan......
<script type="text/javascript">/*bruges ved get*/
function ajaxget(){
var mygetrequest=new ajaxRequest()
mygetrequest.onreadystatechange=function(){
if (mygetrequest.readyState==4){
if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
document.getElementById("result").innerHTML=mygetrequest.responseText
}
else{
alert("An error has occured making the request")
}
}
}
var namevalue=encodeURIComponent(document.getElementById("name").value)
var agevalue=encodeURIComponent(document.getElementById("age").value)
mygetrequest.open("GET", "side2.php?name="+namevalue+"&age="+agevalue, true)
mygetrequest.send(null)

}

if(var){
document.getElementById("submit1").setAttribute("disabled",true);  //kommendoer
}
</script>

------------------------------------------
og knappen
<input type="button" id="submit1" value="SEND" disabled="disabled" onclick="ajaxget()" />
Avatar billede w13 Novice
16. juli 2008 - 12:31 #21
Nej, følgende skal vel rettes:

if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
document.getElementById("result").innerHTML=mygetrequest.responseText
}

til:

if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
  var result = mygetrequest.responseText;
  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }
}

Bemærk at jeg bruger "result" i stedet for "var", da "var" nok kan misforståes af JavaScript-fortolkeren.
Og så har jeg flyttet if-sætningen ind ved siden af "var result = ...", for ellers ville det ikke blive udført, når data var hentet fra PHP-siden.
Avatar billede kaktus Nybegynder
16. juli 2008 - 12:43 #22
Jeg tror vi er tæt på nu........MEN knap forbliver disabled hele tiden
Ser sådan ud nu............
<script type="text/javascript">/*bruges ved get*/
function ajaxget(){
var mygetrequest=new ajaxRequest()
mygetrequest.onreadystatechange=function(){
if (mygetrequest.readyState==4){

/*if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
document.getElementById("result").innerHTML=mygetrequest.responseText
}*/

if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
  var result = mygetrequest.responseText;
  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }
}


else{
alert("An error has occured making the request")
}
}
}
var namevalue=encodeURIComponent(document.getElementById("name").value)
var agevalue=encodeURIComponent(document.getElementById("age").value)
mygetrequest.open("GET", "side2.php?name="+namevalue+"&age="+agevalue, true)
mygetrequest.send(null)
}
</script>
------------------------------------------
og knappen
<input type="button" id="submit1" value="SEND" disabled="disabled" onclick="ajaxget()" />
Avatar billede kaktus Nybegynder
16. juli 2008 - 12:44 #23
ved ikke om det er en fejl...
MEN skulle denne linie ikke med...
document.getElementById("result").innerHTML=mygetrequest.responseText
Avatar billede w13 Novice
16. juli 2008 - 13:09 #24
Jo, hvis du vil have det udskrevet i result også :)

Jeg ved jo ikke, hvad din kode skal gøre.

Der er lige nu intet sted i koden, der fjerner disablingen af submit-knappen, når først den er sat. Det kan jeg sagtens indsætte, men du har ikke sagt, hvornår det skal ske. =)
Avatar billede kaktus Nybegynder
16. juli 2008 - 13:37 #25
nå...ok..
Når side 1 loader første gang....(og hele tiden indtil der kommer besked fra php side)
skal submit knap være synlig......
og når/hvis der kommer besked tilbage fra php siden skal der vises tekst på siden (som er på plads kodemæsigt) samtidig med at submit knap disables.
TJAA dette er mit forkølede forslag som ikke virker.. :-)

if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
document.getElementById("result").innerHTML=mygetrequest.responseText
  var result = mygetrequest.responseText;
  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }
    if !(result){
    document.getElementById("submit1").setAttribute("disabled",false);
  }
}
Avatar billede w13 Novice
16. juli 2008 - 13:42 #26
Det skulle meget gerne resultere i en JavaScript-fejl. =)

Prøv at bruge:

<script type="text/javascript">/*bruges ved get*/
function ajaxget(){
var mygetrequest=new ajaxRequest()
mygetrequest.onreadystatechange=function(){
if (mygetrequest.readyState==4){

/*if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
document.getElementById("result").innerHTML=mygetrequest.responseText
}*/

if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
  var result = mygetrequest.responseText;
  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }else{
    document.getElementById("submit1").setAttribute("disabled",false);
  }
}


else{
alert("An error has occured making the request")
}
}
}
var namevalue=encodeURIComponent(document.getElementById("name").value)
var agevalue=encodeURIComponent(document.getElementById("age").value)
mygetrequest.open("GET", "side2.php?name="+namevalue+"&age="+agevalue, true)
mygetrequest.send(null)
}
</script>
Avatar billede kaktus Nybegynder
16. juli 2008 - 14:15 #27
noopee....
Submit knap er stadig ikke synlig ved første sideload....
(har tømt cashe og prøvet anden browser)

document.getElementById("result").innerHTML=mygetrequest.responseText
altså besked på skærm fra echo på php siden.
er stadig ikke med så vidt jeg kan se, men det kikker vi på bagefter :-)
Avatar billede w13 Novice
16. juli 2008 - 14:28 #28
Hehe. Min fejl. Jeg skrev, du skulle bruge:

<input id="submit1" type="button" value="SEND" disabled="disabled" onclick="ajaxget()">

Det skulle selvfølgelig være:

<input id="submit1" type="button" value="SEND" onclick="ajaxget()">

Og så kan du måske helt undvære:

else{
    document.getElementById("submit1").setAttribute("disabled",false);
  }
Avatar billede kaktus Nybegynder
16. juli 2008 - 14:39 #29
Ja det er den slags der kan ske......
Nu håber jeg så ikke vi har misforstået hinanden, men disablingen skal kun komme når
if ($name !="" || $age != ""){$sat == "true";}(eller lignende)
og ikke som nu med det samme der er submittet uanset om inputfelter er udfyldte eller ej
Avatar billede w13 Novice
16. juli 2008 - 15:04 #30
if(result) gør at knappen disables, hvis resultatet fra AJAX-siden ikke er tom..
Avatar billede kaktus Nybegynder
16. juli 2008 - 15:24 #31
if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
/*document.getElementById("result").innerHTML=mygetrequest.responseText
*/  var result = mygetrequest.responseText;
  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }else{
    document.getElementById("submit1").setAttribute("disabled",false);
  }
}
--------------------------------------------------------------
<input id="submit1" type="button" value="SEND" onclick="ajaxget()">
--------------------------------------------------------------
<div id="result"></div>
--------------------------------------------------------------
og det der sendes tilbage som result for at sættes ind i div kommer fra php siden med
if ($name !="" || $age != ""){
echo "Post er indsat i db";
}
--------------------------------------------------------------
Dette virker ikke som det skulle
Avatar billede w13 Novice
16. juli 2008 - 15:43 #32
Hvis du retter:

  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }else{
    document.getElementById("submit1").setAttribute("disabled",false);
  }

til:

  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
  }

?
Avatar billede kaktus Nybegynder
16. juli 2008 - 15:56 #33
Det var bedre......
Ved du hvad dette gør
onClick="java script: void(ajaxget());"
i forhold til dette
onclick="ajaxget()"
Avatar billede w13 Novice
16. juli 2008 - 16:05 #34
Den der void forstår jeg ikke rigtig.

Grundlæggende så gør den absolut ingen forskel udover at spilde tegn og browserens kørselstid.

Det eneste sted, man skal bruge "java script:" og "void()" er i href-attributter, f.eks. således:

<a href="java script:ajaxget();void(0)">Klik</a>

Dette link vil gøre det samme.

Først fortæller du browseren, at det ikke er et link, men en JavaScript-kode, der kommer nu. Det gøres selvfølgelig med "java script:".
Og da onclick som standard indeholder JavaScript, giver det ingen mening at skrive det i en onclick.

"void(0)" er en kode, som betyder "gør ingenting". Den sørger for, at browseren ikke tror, siden skal reloade, fordi koden står i en href.
Det er dog meget bedre at bruge onclick, så søgemaskiner ikke falder over href'en og bliver forvirrede.
Avatar billede w13 Novice
16. juli 2008 - 16:08 #35
Hvis du nu ville skrive VBScript-syntax i stedet for JavaScript-syntax, så skulle du dog gøre sådan her:

onclick="vbscript:ajaxget()"
Avatar billede kaktus Nybegynder
16. juli 2008 - 16:24 #36
Hold da helt op en service man kan få, du er en haj til det der........
Jeg er meget tilfreds, så smid et svar venligst... :-)
Avatar billede kaktus Nybegynder
16. juli 2008 - 16:30 #37
vanen tro problemer med opera :-(
Avatar billede kaktus Nybegynder
16. juli 2008 - 17:15 #38
og så kunne et javascript jo counte ned og lukke vinduet og reloade hovedsiden under det åbne popup vindue.......... ja der er nok at tage fat på.. heee
Avatar billede kaktus Nybegynder
16. juli 2008 - 17:22 #39
Hvad mon dette script gør....
<script type="text/javascript">
function ny() {
        window.opener.location = window.opener.location ;
        window.close();
}
setTimeout('ny()', 10000);</script>
Avatar billede w13 Novice
16. juli 2008 - 20:04 #40
Koden genindlæser hovedsiden og lukker popup'en.

Det burde dog i stedet gøres sådan her:

<script type="text/javascript">
function ny(){
        window.opener.reload(true);
        window.close();
}
setTimeout("ny()",10000);</script>
Avatar billede kaktus Nybegynder
18. juli 2008 - 09:27 #41
vanen tro problemer med opera :-(
Er der mon nogen der ved om det kan fixes..........
Avatar billede w13 Novice
18. juli 2008 - 09:29 #42
Ja, det burde altid kunne fikses. =) Men for mig er det jo umuligt at sige, hvad fejlen er. Kan vi se siden, som det fejler på? Og hvilken kode drejer det sig om?
Avatar billede kaktus Nybegynder
18. juli 2008 - 13:27 #43
Prøv at kikke her...
http://testkalender.sluk.dk/ajax-post/side1.php
virker nu som den er i IE7, Firefox, opera og Safari :-), MEN div boxen id=result skulle gerne være hidden indtil result er sat......
<div style="background-color:#FBFBFB; border: 1px dashed #CCCCCC; padding:5px;" id="result"></div>
------------------------------------og java script
<script type="text/javascript">/*bruges ved get*/

function ajaxget(){
var mygetrequest=new ajaxRequest()
mygetrequest.onreadystatechange=function(){
if (mygetrequest.readyState==4){
if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
document.getElementById("result").innerHTML=mygetrequest.responseText
  var result = mygetrequest.responseText;
 
  if(result){
    document.getElementById("submit1").setAttribute("disabled",true);
    document.getElementById("reload").setAttribute("disabled",true);
    document.getElementById("result").style.visibility="visible";
   
  }
  else{
    alert("Tomme felter!");
  }
   


}
else{
alert("An error has occured making the request")
}
}
}
var namevalue=encodeURIComponent(document.getElementById("name").value)
var agevalue=encodeURIComponent(document.getElementById("age").value)
mygetrequest.open("GET", "side2.php?name="+namevalue+"&age="+agevalue, true)
mygetrequest.send(null)

}
</script>
Avatar billede w13 Novice
18. juli 2008 - 14:10 #44
Så skal du jo sætte boksen til usynlig først:

<div style="visibility:hidden; background-color:#FBFBFB; border: 1px dashed #CCC; padding:5px" id="result"></div>
Avatar billede kaktus Nybegynder
18. juli 2008 - 14:10 #45
Så tror jeg fejlen er fundet.....
Jeg havde ikke rigtig styr på mine udkommenteringer....
<!--
er nu erstattet med
//<![CDATA[

er tilsyneladende nødvendig for at være xhtml valid... :-)
Avatar billede kaktus Nybegynder
18. juli 2008 - 14:12 #46
ja det er rigtit w13.... er rettet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester