On Dec 18, 12:48 pm, Birger Sørensen <s...@bbsorensen.com> wrote:
> Kim Emax kom med denne ide:
>
>
>
> > Hej.
>
> > jeg har et problem med at denne kode ikke viser svaret fra response
> > siden med mindre jeg propper en alert ind efter ajaxRequest.send(null)
> > - Hvilket jo ikke er meningen. Det virker som om AjaxContainer
> > overskrives, både form og resultat forsvinder, når jeg har trykket ok
> > på alert boksen. Jeg tænker at det kan have noget med den if, elseif
> > php ting, der laves? XXX er det eneste dynamiske, så den overskrift
> > kunne evt. i stedet hentes med ajax og formen blive lavet med en js
> > funktion. Men jeg tænkte jeg ville høre her først om nogle er rendt
> > ind i tilsvarende problemer og hvad best-practice er på denne type
> > opgave.
>
> > ____________________________________________
>
> > function addRelease(action) {
> > var ajaxRequest; // The variable that makes Ajax possible!
>
> > try {
> > // Opera 8.0+, Firefox, Safari
> > ajaxRequest = new XMLHttpRequest();
> > } catch (e) {
> > // Internet Explorer Browsers
> > try {
> > ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
> > } catch (e) {
> > try {
> > ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
> > } catch (e) {
> > // Something went wrong
> > alert("Your browser broke!");
> > return false;
> > }
> > }
> > }
>
> > // Create a function that will receive data sent from the server
> > ajaxRequest.onreadystatechange = function() {
> > if(ajaxRequest.readyState == 4) {
> > var ajaxDisplay = document.getElementById('AjaxContainer');
> > ajaxDisplay.innerHTML = ajaxRequest.responseText;
> > }
> > }
>
> > if(action == "request_release") {
> > var target_date = document.getElementById('target_date').value;
> > var comment = document.getElementById('comment').value;
> > var queryString = "?target_date=" + target_date + "&comment=" +
> > comment + "&action=" + action;
> > }
> > else {
> > // noget andet kode...
> > }
> > ajaxRequest.open("GET", "ajax-releases.php" + queryString, true);
> > ajaxRequest.send(null);
> > alert(queryString);
> > }
>
> > <div id="content">
> > <h2>Releases</h2>
> > <!-- overskrift og form laves af PHP i et if, elseif statement -->
> > <b>Request release for XXX</b><p />
> > <form name="request_release">
> > Target date: <br />
>
> > <input type="text" id="target_date" value="2009-01-01"><br />
> > Comment:<br />
> > <textarea id="comment" rows="10" cols="60"></textarea><br />
> > <input type="submit" id="submit" onclick="addRelease
> > ('request_release')">
> > </form>
> > <hr>
> > <div id='AjaxContainer'></div>
> > </div>
> > ____________________________________________
>
> Et par kommentarer.
>
> Du bruger "GET", og har ganske som det skal være queryString i kaldet.
> Du skal derfor også bruge send( null) eller send( '').
> Det er nok ikke det der vælter læsset - men er alligevel ikke korrekt..
Det er da en:
ajaxRequest.send(null);
er det ikke den du tænker på?
> Du tester på readystate == 4
> Det betyder at kommunikationen er slut - ikke at den er forløbet som
> den skulle.
> Der bør checkes på state også - den skal helst 200 (=> OK), da der
> ellers har været kommunikationsfejl (bortset fra et par andre mulige
> http pudsigheder, som jeg ikke lige kan huske numre på).
Right, det retter jeg lige. Jeg fik tippet inden jeg tog på ferie, men
havde svedt det ud.
> Men der hvor det går galt, er formentlig at du bruger en regulær form
> og en submit knap. (HTML kan umuligt validere - der mangler både action
> og method i form tagget?)
Det er min opfattelse at method fik en submission til at køre igennem,
men det er nok noget med det næste du skriver at gøre
> Både din Ajax og formen bliver sendt.
> Hvilket man godt kunne forestille sig overskriver dit ajax-resultat.
>
> Prøv med en <input type="button" ... i stedet.
arrggh, den problematik har jeg haft før. TAK! Ikke sådan, når man er
vant til at håndkode, så går det lidt stært med at skrive det samme
som de sidste 12 år
Det løste mit problem, herligt.
--
Mvh
Kim Emax