Ho il grande lavoro di dover terminare un lavoro originariamente dato a un appaltatore ma non è mai stato completato. Non è un problema, ma ora mi è stato detto che il sistema deve supportare Firefox 3.6! Non eccezionale ma non qualcosa perdo il sonno fin ora! Il sistema ha una funzione Ajax che utilizza l'oggetto FormData e quindi carica un documento (di solito un PDF). Ho ho fatto funzionare questo attraverso Firefox 3.6 e ottengo il seguenteFormData non è definito - Firefox 3.6.28 alternativo
"formdata non è definito"
var formdata = new formdata ($ ('forma') [0]);
va bene come posso vedere che questo oggetto non è supportato, ho solo bisogno di utilizzare un metodo o un mezzo di raccolta diversa ... Ho usato questo:
var formData = Components.classes["@mozilla.org/files/formdata;1"]
.createInstance(Components.interfaces.nsIDOMFormData);
Tuttavia, questo mi ha dato il seguente errore!
Permesso negato a http://10.29.100.23:8080 per ottenere proprietà XPCComponents.classes
ero incerto il motivo per cui questo è stato ... è il percorso "@mozilla.org/files/formdata;1
" non è corretto? Ho fatto più ricerche e stavo arrivando da nessuna parte! Così ho quindi pensato di serializzare il modulo modificato come segue per ...
var formData = {};
$.each($('form')[0].serializeArray(), function(_, kv) {
if (formData.hasOwnProperty(kv.name)) {
formData[kv.name] = $.makeArray(formData[kv.name]);
formData[kv.name].push(kv.value);
}else {
formData[kv.name] = kv.value;
}
});
anche se questo didn t # errore la funzione Ajax non è stato l'uploading (presumo che non riconosceva o trovare il file o è stato semplicemente raccogliendo una stringa per il valore del file). Qualcuno ha qualche raccomandazione su un'alternativa per FormData nei vecchi browser, in particolare Firefox 3.6 - questo è l'unico vecchio browser che devo supportare.
** aggiornamento ****
questo è il contenuto del modulo nella pagina HTML
<form action="" method="post" enctype="multipart/form-data" name="uploadForm" id="uploadForm" target="#">
<label for="fileField">Rechnung hochladen</label>
<input type="file" name="fileField" id="fileField">
<progress id="progressbar" class="progressbar_margin hidden"></progress>
</form>
Quali elementi sono contenuti nel modulo? Se sono input non file, dovresti essere in grado di usare '$ ('theForm'). Serialize()' come la proprietà 'data' della chiamata' .ajax() '. – Matt
il modulo è semplice ed è composto da quanto segue (vedere la domanda originale) –
Se la domanda può essere riformulata come "usa ajax per i caricamenti di file", allora questo potrebbe aiutare: http://stackoverflow.com/questions/1686099/file- upload-via-ajax-within-jquery La pagina http://valums.com/ajax-upload/ dice che supporta firefox 3.6+. C'è un fork apparentemente più aggiornato su https://github.com/bencolon/file-uploader –