Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 791
Sur og sarkastisk
droppboks's Avatar
Ja, jeg holder på å leke litt rundt med jQuery, men kom over en problemstilling da jeg ville både hente å sende en form til et skript.

Dette er jQuery koden for å sende (submit'e) formen:

Kode

	$("form").submit(function() {
		var docu = $(this).attr("id");
		inputs = new Array();
		var link = "";
		$("input, textarea").each(function() {
			link = link + $(this).attr("name") + "=" + $(this).val() + "&";
		});
		$.get("/action.php?" + link, { doc: docu }, function(data) {
			$(".main").html(data);
			if(docu = "login") { location.reload(true); }
		});
		return false; 
	});
Den virker helt fint, sender formen uten og vise informasjon i adresselinja, men hvis jeg bruker koden under til å hente inn formen først fra et eksternt script, så vil ikke jQuery sende informasjonen uten å reloade sida (setter ?user=Username&pass=Password i URLen f. eks). Dette skjer ikke hvis jeg bruker PHP include.

Kode

	var link = location.href;
	$("#loadfunc").load("/funcs.php", { fix: link });
(fix: link for å validere URL, ble noe kødd med å finne ut hvilken side den ble sendt fra)

For ordens skyld, her er formen (skal nevnes at formen ikke ligger "direkte" i funcs.php, men blir skapt via XML og sånt, men her er kildekoden til funcs.php tatt fra "Vis kilde" i Firefox:

Kode

	<div><form method="get" id="login">
	<div><input  type="text" name="user" class="clear" value="Username" /></div>
	<div><input  type="password" name="pass" class="clear" value="Password" /></div>
	<div><input  type="submit" value="Login" /></div>
</form></div>
Og hvis noen peker ut at jeg bruker "location.reload()" på login, så er det meningen, ettersom det settes noe sessions og sånt og da må siden oppdateres, men det hindrer ikke det faktum at den BURDE sende UTEN å reloade først (og uten å vise info i URL).

Så da håper jeg noen kan hjelpe meg, eller i det minste gi meg noen relevante søkeord, da jeg ikke finner noe relevant eller forståelig med mine :/

OK, fikk det til til slutt, etter en god del lesing på nettet og prøving og feiling... Man må inkludere den aktuelle jQueryen i dokumentet man sender til også (i mitt tilfelle "funcs.php").

Jaja, der har vi hvertfall løsningen i tilfelle noen andre lurer på det
Det funker hvis du kjører den første koden ETTER at du har lastet formen på sida.

Grunnen er at den første koden knytter en hendelse til submit-knappen på formen. Den har ingen submit-knapp å knytte seg til når formen ikke er lastet enda.
bruker og pass sendt som get?
Hell no.
Det stemmer som fuzzy76 sier.

Dette eksempelet er en grei måte å sikre at koden ikke blir kjørt før loading av skjemaet er utført.

Kode

var link = location.href;
$("#loadfunc").load("/funcs.php",  function() {
    $("form").submit(function() {
        var docu = $(this).attr("id");
        inputs = new Array();
        var link = "";
        $("input, textarea").each(function() {
            link = link + $(this).attr("name") + "=" + $(this).val() + "&";
        });
        $.get("/action.php?" + link, { doc: docu }, function(data) {
            $(".main").html(data);
            if(docu = "login") { location.reload(true); }
        });
        return false; 
    });  
});
Men, hvorfor bruker du ikke den normale post funksjonen? http://api.jquery.com/jQuery.post/
Sist endret av danielsk; 11. mai 2010 kl. 12:22.
Sur og sarkastisk
droppboks's Avatar
Trådstarter
Kode nummer 2 havner øverst i hele greia (men ville ikke forde, skrev hvilken løsning jeg brukte etterpå, som slo seg sammen med resten), og jeg bruker ikke den normale "post" funksjonen fordi jeg fikk problemer med arrays fra JavaScript til PHP.
Sist endret av droppboks; 11. mai 2010 kl. 12:26.
Sitat av CHooBE Vis innlegg
Kode nummer 2 havner øverst i hele greia (men ville ikke forde, skrev hvilken løsning jeg brukte etterpå, som slo seg sammen med resten), og jeg bruker ikke den normale "post" funksjonen fordi jeg fikk problemer med arrays fra JavaScript til PHP.
Vis hele sitatet...
Hvilken kode som er øverst har ingenting å si. Lær deg hvordan DOM fungerer
z0p
uʍop ǝpısdn
z0p's Avatar
danielsk: ikke nødvendigvis sant..

Kode

<...>
  <element id="eid">
    <script type="text/javascript">
      el = getElementByIdWrapper('eid');
    </script>
  </element>
<...>
er vesentlig forskjellig fra

Kode

<...>
  <script type="text/javascript">
    el = getElementByIdWrappper('eid');
  </script>
  <element id="eid" />
<...>
Sist endret av z0p; 18. mai 2010 kl. 09:34.