[jquery] ajax post ne prikaže vsebine
5 naročnikov
5 naročnikov
Pozdravljeni!
Delam neko stran in me muči nekaj glede ajax-a. S temle pošiljam (spremenljivke so definirane pred tem, vrednost dobim preko val()):
$.ajax({
type: "POST",
url: "http://localhost/page/submit.php",
data: "title="+title+"&fajl="+fajl,
success: function(html) {
alert(html);
},
error: function(error) {
alert(error);
}
});
Izpišem tako:
echo $_POST['title'];
echo $_FILES['fajl']['name'];
Pa še forma:
<form method="post" enctype="multipart/form-data">
<input type="text" name="title" id="submit" value="{MAIN_INPUT_VALUE}" >
<div>{MAINPUTON}</div><label class="cabinet">
<input type="file" name='fajl[]' class="file" />
</label>
<input type="submit" name="action" id="button" value="{MAIN_ADD}" />
</form>
In sedaj ko "izvajam" funkcijo - kličem stran. Se mi v alert okenčku ne pojavi vsebina, ki bi se morala. V čem je napaka?
Lep pozdrav, Jure
15 odgovorov
To je dobro, ker pomeni, da se callback izvede.
Zakaj je pa prazno pa je druga stvar.
Si s kakšnim debuggerjem pogledal, kakšen je response header?
Firefoxov addon HttpFox vrne:
00:00:17.681 2.376 509 0 POST (Aborted) NSBINDINGABORTED http://localhost/page/submit.php
Čeprav med POST data pravilno izpiše poslane podatke (name in value).
Hm... ja dela v firefoxu v chormu pa začuda ne (pojma nimam v čem je tu finta). Načeloma podatke pošlje, ampak nekako jih ne prejme oz. karkoli pač...
Mogoče je finta v cachiranju requesta.
Probaj tako:
url: "http://localhost/page/submit.php?" + new Date().getTime()
Sem probaval nekaj.. zdaj hardcoded forma deluje. Zanima me še nekaj, da nebom odpiral nove teme: na kak način pošiljati "podatke" preko input file tipa, torej, da bi v .php datoteki dobil podatek na tak način: $_FILES['fajl']['...']. Je to sploh mogoče samo z ajaxom ali je potreben kakšen plugin?
Saj lahko submitaš cel array, ki ga imaš v POST-u.
Potem v target skripti obdelaš array v for-u ali foreach-u (še boljše, da ne zašuštraš kaj z indeksi).
ti lahko dobiš vse parametre v formi preko
$.param($('#form').serializeArray())
in to podaš pod data... pa priporočam da ne hardkodiraš urljev v javascript, raje dodaj action k formi in nato to uporabi v js-u...