Heim >Backend-Entwicklung >PHP-Tutorial >Der Grund, warum die Download-Anfrage nicht in Ajax gesendet werden kann
Der mit Ihnen geteilte Inhalt ist der Grund, warum Download-Anfragen nicht in Ajax gesendet werden können. Er hat einen gewissen Referenzwert.
Ich führe kürzlich Datei-Downloads durch und das Schreiben im Hintergrund. Ich sollte in der Lage sein, Dateien, verschiedene Dateien, Bilder, Excel usw. herunterzuladen, wenn ich einfach hineingehe.
Aber zunächst schlägt der Download immer fehl , und der folgende verstümmelte Code wird angezeigt:
Anforderungscode an der Rezeption:
$('#fileexcel').unbind('click').bind('click',function(){ alert("我要下载了"); $.ajax({ type:'post', url:'media', data:null, async:true, success : function(msg){ alert(msg); } }) })
Es scheint, dass es kein Problem gibt, aber es ist so kann nicht heruntergeladen werden.
Ich dachte ursprünglich, dass es ein Problem mit dem Backend-Code gäbe, aber es gibt immer noch Probleme damit, verschiedene Demos ins Internet zu stellen.
Nachdem ich einen Tag lang gekämpft hatte, fand ich endlich das Problem.
Es liegt ein Problem mit der Anforderungsmethode vor. Datei-Download-Anfragen können nicht in Ajax geschrieben werden!
Schreiben Sie es einfach so:
<a href="/media">点击下载Excel</a> 或者 location.href = '/media';
Klicken Sie dieses Mal zum Herunterladen und der folgende ideale Effekt wird angezeigt.
Dann fassen Sie zusammen, warum die Download-Anfrage nicht in Ajax gesendet werden kann:
Grund: Aufgrund der Antwort verarbeitet der allgemeine anfordernde Browser die vom Server ausgegebene Antwort, z. B. das Generieren von PNG, das Herunterladen von Dateien usw. Bei der Ajax-Anfrage handelt es sich jedoch nur um eine „Zeichentyp“-Anfrage, dh der angeforderte Inhalt wird gespeichert im Texttyp. Die Datei wird in binärer Form heruntergeladen, obwohl die zurückgegebene Antwort nur gelesen und nicht ausgeführt werden kann. Um es ganz klar auszudrücken: js kann den Download-Verarbeitungsmechanismus und das Programm nicht aufrufen.
Verwandte Empfehlungen:
Ajax kann nicht zum Anfordern von Download-Dateien verwendet werden
Der Grund, warum die Ajax-Anfrage die Datei nicht herunterladen kann
Alternative Lösung für den Dateidownload, die Ajax nicht verwenden kann
Das obige ist der detaillierte Inhalt vonDer Grund, warum die Download-Anfrage nicht in Ajax gesendet werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!