[jquery] ajax post ne prikaže vsebine

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

Kaj pa se pojavi?

V bistvu nič, le prazno okence.

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

Kaj pa če hardcodaš ene vrednosti in probaš pognati submit.php direkt v browserju, dela normalno?

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