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