webForumDet fria alternativet

Ladda sida med javascript och skicka med post-data

JavaScript

11 svar · 871 visningar · startad av oskob

Medlem sedan maj 20021 558 inlägg
Frågan#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!

Medlem sedan feb. 2000438 inlägg
#2

Varför inte post-a?

Medlem sedan maj 20021 558 inlägg
#3

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

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.

Medlem sedan aug. 20039 340 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>
Medlem 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.

Medlem sedan aug. 20039 340 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.

Medlem 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.

Medlem sedan aug. 20039 340 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.

Medlem 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å?

Medlem 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.

Medlem sedan maj 20021 558 inlägg
#12

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

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)