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
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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....
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. =)
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.
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 :-(
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....
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
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.
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
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 (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.
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){ 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()" />
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. =)
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); } }
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){ 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>
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 :-)
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
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
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.
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
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?
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;
} 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)
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.