webForumDet fria alternativet

Ajax

21 svar · 971 visningar · startad av Jeppeweb

JeppewebMedlem sedan sep. 2006462 inlägg
#1

Effekten jag är ute efter är att en sida ska uppdateras utan att sidan laddas om när man trycker på en knapp.

Är det möjligt med den här koden?

           <script type="text/javascript">
                try {
                    //Nästan alla webbläsare utom Internet Explorer
                    var xmlHttp = new XMLHttpRequest();
                } catch(e) {
                    try {
                        //Internet Explorer
                        var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.2.0");
                    } catch(e) {
                        try {
                            //Äldre Internet Explorer
                            var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch(e) {
                            alert("Din webbläsare stödjer tyvärr inte XMLHttpRequests!");
                        }
                    }
                }
        
            function ajaxRequest(url, complete) {
                xmlHttp.onreadystatechange = function() {
                    if (xmlHttp.readyState == 4) {
                        complete();
                    }
                }

                xmlHttp.open('GET', url, true);
                xmlHttp.send(null);
            }

        </script>

Hur lägger jag in den effekten i den här koden?

Response.Write "<form action=" & sidan & "?do=vote&ID=" & Recset("vID") &" method=post>"

onclick="ajaxRequest('?') - eller?

voigtann1Medlem sedan juni 20019 519 inlägg
#2

på din submit knapp ja. eller onSubmit

JeppewebMedlem sedan sep. 2006462 inlägg
#3

Knapp ="<center><br><input type=""submit"" value=""Rösta!""></center>

Har lekt med att få in kodsnutten där, men får det inte att fungera. Hjälp?

voigtann1Medlem sedan juni 20019 519 inlägg
#4

http://www.w3schools.com/jsref/jsref_onclick.asp

Lär dig där om onclick. du måste return false;
Du vill inte postar med <form> om du vill triggar din ajax.
onclick=""ajaxkoden();return false""

JeppewebMedlem sedan sep. 2006462 inlägg
#5
<input type=""submit"" onclick=""ajaxRequest(' & sidan & "?do=vote&ID=" & Recset("vID") & ');return false"" value=""Kör!"">

Fungerar ej..

Tacksam för hjälp

voigtann1Medlem sedan juni 20019 519 inlägg
#6

Snälla skriv vad som inte fungera, vad händer?
Vad säger ditt Javascript, har ditt javascript fungerat tidigare. Stoppas sidan eller körs postningen ändå? Vad händer? får du ett ASP fel när du gör ditt ajax (Tips är att du använder Firefox och verktyget Firebug för att se vad som skickas och vad du får för svar från servern).

Med ett svar som "Fungerar ej.." får man ibland lust bara att skriva "nähä"

Eftersom du ger inte mer kod än så så googlade jag och fick upp från ASPsidan en artikel.

Du saknar i din ajaxRequest vad den skall göra när den blir complete.

onclick="ajaxRequest('test.asp?name=Andy&year=2007&month=Oktober&rand=' + Math.random(), function() { alert(xmlHttp.responseText) });"

i deras exempel så får du en popup alert med vad som retuuneras från test.asp.

Vad är det din kod skall göra? lägga en röst eller?

JeppewebMedlem sedan sep. 2006462 inlägg
#7

Får ett asp-fel.

Microsoft VBScript compilation error '800a0408'

Invalid character

/poll/vote.asp, line 36

Knapp ="<center><br><input type=""submit"" onclick=""ajaxRequest(' & sidan & "?do=vote&ID=" & Recset("vID") & ');return false"" value=""Rösta!""></center>"
------------------------------------------------------------------------------^

Ja, precis. Den ska lägga in en röst.

JeppewebMedlem sedan sep. 2006462 inlägg
#8

Knapp ="<center><br><input type=""submit"" onclick=""ajaxRequest(' & sidan & "?do=vote&ID=" & Recset("vID") & ');return false"" value=""Rösta!""></center>"
Response.Write "<form action=" & sidan & "?do=vote&ID=" & Recset("vID") &" method=post>"

voigtann1Medlem sedan juni 20019 519 inlägg
#9

ser du -------^ den brukar visa ungefär vad felet ligger:

Knapp ="<center><br><input type=""submit"" onclick=""ajaxRequest('[red]"[/red] & sidan & "?do=vote&ID=" & Recset("vID") & [red]"[/red]');return false"" value=""Rösta!""></center>"

du har två fel på den raden röd markerade.

JeppewebMedlem sedan sep. 2006462 inlägg
#10

Nu försvann felmeddelandet men det händer ingenting när jag klickar på knappen.

OnClick ska inte vara i den här raden istället?

Response.Write "<form action=" & sidan & "?do=vote&ID=" & Recset("vID") &" method=post>"

JeppewebMedlem sedan sep. 2006462 inlägg
#11

Tankade ned Firebugg. :)

GET http://www.woho.se/index.asp?do=vote&ID=47500 (138ms)https://www.woho.se (line 65)
complete is not a function
[Break on this error] complete();

JeppewebMedlem sedan sep. 2006462 inlägg
#12

Får fortfarande samma felmeddelande.

            Knapp ="\<center\>\<br\>\<input type=""submit"" value=""Rösta!""\>\</center\>"
			Response.Write "\<form onclick=""ajaxRequest('" & sidan & "?do=vote&ID=" & Recset("vID") & "');return false"" method=post\>"
voigtann1Medlem sedan juni 20019 519 inlägg
#13

1. Får jag fråga rent praktiskt hur du hade tänkt lösa "onclick" på ett form? Du kan använda onSubmit istället om det är det du vill.

Ge mig en test länk istället.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#14

Lite OT, men om du vill köra med ett "Ajax paket" som funkar i princip överallt kan jag rekommendera "Sack" när du ska skicka GET-DATA:
http://www.twilightuniverse.com/projects/sack/

...och "web toolkit aim" när du ska skicka POST-DATA via ajax:
http://www.webtoolkit.info/ajax-file-upload.html

voigtann1Medlem sedan juni 20019 519 inlägg
#15

http://www.woho.se/index.asp?do=vote&ID=44 är det ditt ajax anrop?
1. Den spottar ut en hel del html kod som verkligen inte behövs.
2. Du får ett felmeddelande över att complete is not a function som jag skrev: http://www.webforum.nu/showthread.php?p=1395107#post1395107

JeppewebMedlem sedan sep. 2006462 inlägg
#16

voigtann1 skrev:

http://www.woho.se/index.asp?do=vote&ID=44 är det ditt ajax anrop?
1. Den spottar ut en hel del html kod som verkligen inte behövs.
2. Du får ett felmeddelande över att complete is not a function som jag skrev: http://www.webforum.nu/showthread.php?p=1395107#post1395107

Ja, det är mitt ajax anrop.

Jag vet att den får det felmeddelandet, som jag skrev.
Vad ska jag göra för att fixa det?

Får jag fråga rent praktiskt hur du hade tänkt lösa "onclick" på ett form? Du kan använda onSubmit istället om det är det du vill.

Som jag frågade högst uppe, är det en bra lösning att göra såhär, jag vet inte. Jag frågade er.

JeppewebMedlem sedan sep. 2006462 inlägg
#17

MickeA.com skrev:

Lite OT, men om du vill köra med ett "Ajax paket" som funkar i princip överallt kan jag rekommendera "Sack" när du ska skicka GET-DATA:
http://www.twilightuniverse.com/projects/sack/

...och "web toolkit aim" när du ska skicka POST-DATA via ajax:
http://www.webtoolkit.info/ajax-file-upload.html

Ska titta närme på det, tack.

EDIT* Förstod inte mycket. Exempel som gavs var ju i PHP.

voigtann1Medlem sedan juni 20019 519 inlägg
#18

Jeppeweb skrev:

Som jag frågade högst uppe, är det en bra lösning att göra såhär, jag vet inte. Jag frågade er.

Var ställer du den frågan?

Det är möjligt att göra med den kod du har postat.

Men onClick på ett form är inte möjligt i teorin. den kommer ju triggas så fort du trycker på något inne i <form> taggen:

<form>
<input type="text" value="hej">
<input type="submit" value="skicka">
</form>

Om du har onclick på form taggen så kommer du triggar ajaxet på var du än trycker på (dvs vilken input du än väljer).

2. Mitt tips är att du läser på lite hur ajax fungera. för just nu skickar du bara ajax anropet till en sida. Det du vill (är ju att veta vilket val användaren har valt när han väljer rösta). Ajaxen i din kod gör ingen "post" funktion utan en get anrop dvs i QueryString. Du måste ha mer javascript kod för att det skall fungera som en post data.

Varför du får felmeddelandet med complete() is not a function är för att du inte har någon funktion i din variabel complete.

Knapp ="<center><br><input type=""submit"" onclick=""ajaxRequest('" & sidan & "?do=vote&ID=" & Recset("vID") & "'[red],function() { alert('Tack för att du röstade'}[/red]);return false"" value=""Rösta!""></center>"

Men det kommer inte lösa ditt problem ändå eftersom den inte har lagt någon röst. Eftersom den inte har ett val du måste ha med dig "vote" i din querystring som du bygger.

Googlade på Ajax and Post och fick upp denna som kan hjälpa dig om du läser den:
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

voigtann1Medlem sedan juni 20019 519 inlägg
#19

Jeppeweb skrev:

Förstod inte mycket. Exempel som gavs var ju i PHP.

Vilken tur att ajax inte är php då. Det är bara ett exempel.

echo är Response.Write och den hämtar bara ut get och Post data Som en vanlig Request.Form, Request.QueryString.

MickeA.com: Gillar scriptet tack för länkarna. ska kollas närmare på.

LarsGMedlem sedan dec. 200012 464 inlägg
#20

Flyttas från ASP

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)