webForumDet fria alternativet

Ladda sida med javascript och skicka med post-data

11 svar · 871 visningar · startad av oskob

oskobMedlem sedan maj 20021 558 inlägg
#1

Hej hej!

Jag gör ett kommentarsystem till min hemsidan där man ska kunna posta en kommentar utan att behöva ladda om sidan. Jag har kommit så långt att jag skickar variablarna med formulärdatan till en function som laddar in sidan med SQL-kopplingen med XMLHttpRequest(alt.activeX för ie) men jag kommer inte på hur jag ska skicka datan till php-filen som laddas. Jag funderade på att göra det som GET, alltså att mosa in allt i url:en och hämta det därifrån, men blir inte det känsligt för konstiga tecken som kanske är med i kommentarerna. '&' betyder ju tex. att strängen är slut och en ny kommer och det kommer ju ställa till det. Eller encodas sånt automatiskt?

Tack på förhand!

CssonMedlem sedan feb. 2000438 inlägg
#2

Varför inte post-a?

oskobMedlem sedan maj 20021 558 inlägg
#3

Hur gör jag det med javascript då utan att sidan laddas om?

Engine^Medlem sedan dec. 20003 887 inlägg
#4

Hur har du tänkt att du ska kunna spara data utan att köra php-filen igen (utan att ladda om)?

Tror inte jag riktigt förstår vad du menar.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

Här är ett litet exempel som jag knåpade ihop. Det hanterar dock bara enkla form-element, som textarea och input. I det här läget känner jag starkt för att ta en femtiolapp för att anpassa koden så att den passar bra med din sida. Eller så göra jag det gratis... Men nedan följer iaf ett exempel på hur man postar data med XMLHttpRequest.

<script>
function parseFormData(form){
	var formra=[];

	for (var i=0; i<form.length; i++){
		formra.push(form[i].name+"="+encodeURIComponent(form[i].value))
	}
	return formra.join("&");
}

zz=function(){
	var req, strResult;
	req = ("function"==typeof ActiveXObject)?(new ActiveXObject('Microsoft.XMLHTTP')):(new XMLHttpRequest ());
	with(req){
		open("POST","sida.php",false);
		setRequestHeader("content-type","application/x-www-form-urlencoded");
		send(parseFormData(document.getElementById("bar")));
	}

	alert(req.responseText);

}

</script>

<form id="bar">
<input type="button" onclick="zz();">
<input name="name" class="nput" style="width: 140px;"/>
<input name="mail" class="nput" style="width: 140px;"/>
<textarea id="message" name="message" class="nput" style="height: 40px; width: 200px;">
</TEXTAREA>
</form>
Erik JuhlinMedlem sedan maj 200010 687 inlägg
#6

Lite onödigt att använda XMLHttpRequest för detta. Gör bara en postning till en sida som sparar ner datat och spottar ut status "204 No Content" så kommer webbläsaren inte byta sida.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#7

Erik Juhlin skrev:

Lite onödigt att använda XMLHttpRequest för detta. Gör bara en postning till en sida som sparar ner datat och spottar ut status "204 No Content" så kommer webbläsaren inte byta sida.

Problemet med den metoden är att sidan kommer lämnas om något går fel.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#8

Det ser jag som en fördel. Då får man klart och tydligt se vad som gick fel.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#9

Men det tycker nog inte oskob. Han vill ju göra en gästbok, och då vill han nog att allt ska ske utan att sidan laddas om. Annars hade han nog använt ett vanligt post-formulär.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#10

Att saker går fel är ju endast i absoluta undantag. Varför bry sig om det då?

oskobMedlem sedan maj 20021 558 inlägg
#11

Nej fel ska ju saker inte gå.
Men no content verkar ju faktiskt vara en ganska bra lösning. Har det några andra draw backs förutom att sidan Kan laddas om om det blir fel?
Det verkar vara den smidigaste metoden just nu.

oskobMedlem sedan maj 20021 558 inlägg
#12

Exakt hur spottar man ut no content till webbläsaren?

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