[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

Javascript nima dostopa do file systema, zato ne moreš vsebine fajla poslati preko klasičnega AJAXa. Nekateri jQuery plugini za rešitev tega problema uporabljajo Flash, da se pa tudi še kar lušno z mutenjem z nevidnim iframom in target atributom na formi.

Hm.. sem probal takole, pa mi ne vrne podatka v file tipu.

$('form').submit(function() {
    var data = $.param($(this).serializeArray());
    alert(data);
});
<form>
    <input type="file" name="image" />
    <input type="text" name="title" />
    <input type="submit" name="action" value="Submit" />
</form>

Seveda ne, iz razloga, ki sem ti ga povedal zgoraj :)

Medtem ko sem jaz pisal, si me prehitel.

Torej je potreben plugin, če želim pošiljat podatke if file tipa.. Hvala za odgovore.

Če gre za skripto na istem filesystemu, zakaj ne pošlješ samo filepath in potem target skripta odpre file?

EDIT: aja, tudi če je na remote serverju, ga lahko odpreš, če je dostopen z weba.