DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   Submit forme na cudan nacin :) (http://www.devprotalk.com/showthread.php?t=10964)

MorenoArdohain 24. 04. 2012. 23:16

@centaur Ja sam tebe razumeo, ti linkove nisi.

srdjevic 24. 04. 2012. 23:19

A jesi li probao nesto ovako:

- povuces html string sa druge stranice
- stavis ga u dom node (dotle si sam stigao)
- napravis objekat koji sadrzi sve elemente forme (koristis doc.getElementsByTagName('input') i 'select' ako bas neces jQuery da ti odradi serializaciju, pa ih poslazes u objekat
- ocitaj url iz forme na koji treba da opali submit
- udari AJAX call sa POST-om koji ima tvoj array elemenata

i uradio si istu stvar, i koristio si AJAX post. Nema reloada tako valjda.

centaur 24. 04. 2012. 23:22

^Ne moze dva ajax requesta, mora da bude jedan.

@MorenoArdohain
Moguce da si u pravu, sta drugo da ti kazem, ali ja zaista ne vidim da tamo pise kako da resim.
Opet sam procitao ono sto tamo pise i vidim resenje za problem sa dodavanjem novih input elementata u postojecu formu preko JS-a.
Ja sam time nemam nikakav problem.

Br@nkoR 24. 04. 2012. 23:51

sakriven iframe, img

MorenoArdohain 25. 04. 2012. 00:17

Citat:

Originalno napisao centaur (Napišite 106644)
Opet sam procitao ono sto tamo pise i vidim resenje za problem sa dodavanjem novih input elementata u postojecu formu preko JS-a.
Ja sam time nemam nikakav problem.

Rekao si da imas problem sa submitom takve forme. Na jednom linku je opisano da forma ne sme biti unutar tabele, da li je kod tebe mozda takav slucaj?

Na drugom linku je opisano kako je ispravno dodavati form elemente u DOM, da bi submit uopste radio kako treba.

centaur 25. 04. 2012. 00:22

^Nije u tabeli, niti ja dodajem bilo kakve elemente forme.
Ja samo menjam par postojecih vrednosti u formi i to radi ok.
Submit te forme ne radi.

MorenoArdohain 25. 04. 2012. 00:45

Proveri samo da li se isto desava i u IE i u FF, recimo, pa da vidimo. Jos ako prijavljuje neku gresku, pastuj ovde.

centaur 25. 04. 2012. 11:53

@Br@nkoR
Ne mogu da kontrolisem sta je u iframe-u spolja, tj ne mogu da ubacim u frame html koji hocu van samog iframe-a.

@MorenoArdohain
Ne mogu da testiram u iE, nemam ga.
Probao sam FF, Chrome, Opera, Safari....svuda isto.

Evo i kompletnog koda, ako neko ima vremena i zeli da pomogne.
Prvo index.html
Kôd:

<html>
<head>
<title>Bla bla title</title>
<script type="text/javascript" src="/script.js"></script>
</head>

<body>
Some  nice body of this document
</body>

</html>

Jedina namena njegova je da uvuce odgovarajuci js.

Evo scrpts.js:
Kôd:

var xmlHttp = new XMLHttpRequest();
var url = "form.html";
xmlHttp.open('GET', url, true);
xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState != 4) {
                return;
        }
        var result = xmlHttp.responseText;       
        var doc = document.implementation.createHTMLDocument('');
        doc.documentElement.innerHTML = result;
       
        var param1 = doc.getElementById("field1");       
        param1.value = "Well, I'm new one";
        alert(doc.getElementById("field1").value);
        var theForm = doc.forms['someCoolForm'];
        theForm.submit();       
};
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.send(null);

Tu treba da se odigra sva akcija.

form.html, tj forma koja se "uvlaci":
Kôd:

<html>
<head>
        <title>tra la la</title>
</head>
<body>
        <form action="http://www.test.intra/save.php" method="post" name="someCoolForm" id="someCoolForm">
                <input type="text" name="field1" id="field1" value="sdf" />
                <input type="text" name="field2" id="field2" value="sdfsd" />
                <input type="text" name="field3" id="field3" value="sdfsdsdfsd" />
                <input type="text" name="field4" id="field4" value="sdfsdsdfsdf" />
                <input type="submit" name="" value="Submit" />
        </form>
</body>
</html>

I na kraju save.php, tj fajl na koji treba da se odradi submit te forme:
Kôd:

<?php
$tmp = serialize($_POST);
file_put_contents(dirname(__FILE__).'/public/test.txt', $tmp);
?>

Svaki konstruktivni predlog dobrodosao.

Br@nkoR 25. 04. 2012. 12:48

Citat:

Originalno napisao centaur (Napišite 106651)
@Br@nkoR
Ne mogu da kontrolisem sta je u iframe-u spolja, tj ne mogu da ubacim u frame html koji hocu van samog iframe-a.

Ono što sam mislio je da umesto reda:
Kôd:

var doc = document.implementation.createHTMLDocument('');
staviš, npr. nešto napamet:
Kôd:

var iframe = document.createElement('iframe');
iframe.src = 'about:blank';
iframe.style.display = 'none';
document.body.appendChild(iframe);
var doc = iframe.contentDocument;

Pošto se koristi document.body potrebno je sačekati da se stranica učita, pa da se izvrši kod unutar script.js (onload), možda je potrebno i sačekati da se iframe učita, nisam testirao.

Ili ne moraš da koristiš XMLHttpRequest, već sve preko iframe (učitaš form.html u isti i izvršiš potrebne izmene i submituješ formu) ukoliko se stranice nalaze na istom domenu.

centaur 25. 04. 2012. 13:04

^Da, u tom slucaju mi ne treba ajax jer su na istom domenu.
Pokusavam, za sada ne uspevam da ubacim html u iframe.


Vreme je GMT +2. Trenutno vreme je 17:44.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.