Ich habe fast 20 verschiedene Forenbeiträge / Stackoverflow-Fragen / Antworten dazu gelesen, aber ich kann diese Arbeit einfach nicht bekommen. Ich habe jetzt ungefähr 5 Jahre mit jQuery / PHP gearbeitet, aber dies ist das erste Mal, dass ich so etwas mit AJAX machen muss.
Also ... im Moment teste und versuche ich nur, eine TXT-Datei hochzuladen und versuche, den Inhalt zu erhalten, indem file_get_contents()
ich ihn verwende und an meinen JS-Code zurücksende.
Ich habe alle ausgefallenen Mitarbeiter entfernt und meine Dateien so weit wie möglich vereinfacht. Dies ist also meine HTML-Datei:
<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<form id="uploadForm" action="url/to/php/script">
<input type="file" name="frame" />
<input type="submit" value="UPLOAD" />
</form>
</div>
</div>
</div>
und mein JS
$("#uploadForm").bind('submit',(function(e) {
e.preventDefault();
$.ajax({
url: 'url/to/php/script',
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData: false,
success: function(data) {
console.log(data);
}
});
}));
und in meinem PHP-Skript habe ich, var_dump($_FILES)
das mir ein leeres Array gibt.
Mein JS & Formular wird aus einer der Antworten des Stapelüberlaufs kopiert. URL: $ _POST und $ _FILES nach dem Hochladen der AJAX-Datei leer - weil es so markiert ist, wie es funktioniert, aber für mich ... immer noch leer.
Normalerweise hat meine Form enctype="multipart/form-data"
und method="post"
aber es gibt keinen Unterschied.
Meine jQuery lib: http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
Ich bin hierher gekommen, weil ich das Gefühl habe, dass ich keine Dinge mehr ausprobieren kann, egal was ich tue, das $_FILES
Array ist leer.
Ihre AJAX-Logik ist in Ordnung. Das Problem ist, dass Sie eine sehr, sehr veraltete Version von jQuery verwenden und die AJAX-Logik im Laufe der Entwicklungsjahre viele Verbesserungen erfahren hat - insbesondere seit der zunehmenden Unterstützung FormData
und dem Senden von Binärdaten über AJAX.
Sie sollten jQuery auf mindestens 1.12 aktualisieren, idealerweise auf 3.2, wenn Sie keine ältere IE-Unterstützung benötigen.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen