View Full Version : [jquery][php] primo utilizzo
Dato che ho la necessità di inviare un file al server (cosa che non avevo mai fatto) ho provato a utilizzare jquery nel codice JS, scrivendo questa funzione per inviare il file:
InsertHandler.prototype.handleFile = function(event) {
var file = event.target.id;
// var filename = file.value;
//section = SPLIT id
var filename = $("#OffertaFile").val();
var par = {};
par[file] = filename;
$.post( "http://www.nomeserver.it/PATH/test.php", par, function(){alert("Data Uploaded:");} );
}
Lato server, c'è questo semplice file php di prova:
<?php
print "Received {$_FILES['OffertaFile']['name']} - its size is {$_FILES['OffertaFile']['size']}";
?>
Esito?
Non arriva il file, nel senso che l'output è: Received - its size is
Motivo?
PS: stesso risultato con $.ajax (jquery)
Slayer86
25-09-2010, 19:17
anche io sto facendo a cazzotti con jquery e php... per realizzare un semplice login...
sembra quasi che il metodo post non faccia niente... non capisco... ho aperto il topic oggi pomeriggio e si potrebbero quasi unire...
Sono riuscito a inviare il file (e a riceverlo),
ho create un iframe invisibile cablato in html.
Ci aggiungo dinamicamente un form con i dovuti attributi,
quindi (dopo aver fatto selezionare il file) sposto un elemento <input type=file> nel form del iFrame invisibile.
a questo punto invio il submit del form nel iFrame invisibile con una chiamata esplicita a submit()
Tutto riesce, MA PERCHE' HO IL CAMBIO PAGINA ?
Non dovrebbe essere una richiesta nascosta dato che a farla è un form dentro un iFrame invisibile?
Manca qualche attributo nel iFrame o nel form in esso contenuto?
qui i codici:
Codice html dell'iFrame
<iframe id="hiddenFrame" style="display:none">
</iframe>
Settaggio JS
// iFrame & hidden_form //
this.hiddenFrame = document.getElementById("hiddenFrame");
this.hiddenForm = document.createElement("form");
this.hiddenForm.id = "hiddenForm";
this.hiddenForm.name = "hiddenForm";
this.hiddenForm.method = "post";
this.hiddenForm.action = "http://www.XXX.xxx/test.php";//this.URL;
this.hiddenForm.enctype="multipart/form-data";
this.hiddenForm.src="about:blank";
//this.hiddenForm.target="hiddenForm";
this.hiddenForm.addEventListener("submit",function(){alert("four");},false);
this.hiddenFrame.appendChild(this.hiddenForm);
Funzione che si attiva quando è stato selezionato il file nel frame visibile
InsertHandler.prototype.handleFile = function(event) {
var file = event.target;
var fileParent = file.parentNode;
this.hiddenForm.appendChild(file);
this.hiddenForm.submit();
}
lascia perdere jquery e utilizza dojo ... io mi trovo bene ed ha un sacco di widget che puoi utilizzare
qui trovi una demo di un "file uploader (http://demos.dojotoolkit.org/demos/uploader/)" . Te lo consiglio perchè puoi definire che tipi di file puo uploadare l'utente , la grandezza del file e l'upload multiplo ( puoi selezionare più files contemporaneamente ) non conosco jquery ma da quel che ho visto non mi risulta che abbia queste opzioni
Slayer86
28-09-2010, 13:20
Sono riuscito a inviare il file (e a riceverlo),
ho create un iframe invisibile cablato in html.
Ci aggiungo dinamicamente un form con i dovuti attributi,
quindi (dopo aver fatto selezionare il file) sposto un elemento <input type=file> nel form del iFrame invisibile.
a questo punto invio il submit del form nel iFrame invisibile con una chiamata esplicita a submit()
Tutto riesce, MA PERCHE' HO IL CAMBIO PAGINA ?
Non dovrebbe essere una richiesta nascosta dato che a farla è un form dentro un iFrame invisibile?
Manca qualche attributo nel iFrame o nel form in esso contenuto?
qui i codici:
Codice html dell'iFrame
<iframe id="hiddenFrame" style="display:none">
</iframe>
Settaggio JS
// iFrame & hidden_form //
this.hiddenFrame = document.getElementById("hiddenFrame");
this.hiddenForm = document.createElement("form");
this.hiddenForm.id = "hiddenForm";
this.hiddenForm.name = "hiddenForm";
this.hiddenForm.method = "post";
this.hiddenForm.action = "http://www.XXX.xxx/test.php";//this.URL;
this.hiddenForm.enctype="multipart/form-data";
this.hiddenForm.src="about:blank";
//this.hiddenForm.target="hiddenForm";
this.hiddenForm.addEventListener("submit",function(){alert("four");},false);
this.hiddenFrame.appendChild(this.hiddenForm);
Funzione che si attiva quando è stato selezionato il file nel frame visibile
InsertHandler.prototype.handleFile = function(event) {
var file = event.target;
var fileParent = file.parentNode;
this.hiddenForm.appendChild(file);
this.hiddenForm.submit();
}
DNAx86, istruiscimi... pure io mi ritrovo a fare a pugni con l'upload di un file, poi siccome il file in questione dovrà avere dei riferimenti all'interno di un db mi trovo un atimo in difficoltà...
Cmq... io creo nel codice html l'iframe nascosto, poi ci inserisco dentro un form e tutti i campi che mi servono via javascript, una volta fatto questo posso passare al form nascosto tutti i dati che ho inserito in quello visibile giusto?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.