ホームページ >バックエンド開発 >PHPチュートリアル >ajaxでダウンロードリクエストが送信できない原因

ajaxでダウンロードリクエストが送信できない原因

零到壹度
零到壹度オリジナル
2018-04-10 09:44:181619ブラウズ

この記事で共有した内容は、ajaxでダウンロードリクエストが送信できない原因です。必要な友達は参考にしてください。

最近ファイルのダウンロードを行っているので、バックグラウンドのコントロール層にアクセスすると、ファイル、さまざまなファイル画像、Excel などをダウンロードできるはずです

しかし、最初は常にダウンロードが失敗し、次のような文字化けしたコードがポップアップ表示されます:

フロントリクエストコード:

$('#fileexcel').unbind('click').bind('click',function(){
                    alert("我要下载了");
                    $.ajax({
                        type:'post',
                        url:'media',
                        data:null,
                        async:true,
                        success : function(msg){
                            alert(msg);
                        }
                    })
                })

問題ないようですが、ダウンロードできません。

当初はバックエンドのコードに問題があるのではないかと考えていましたが、インターネット上にさまざまなデモを公開することには依然として問題があります。

一日苦労した後、ついに問題を発見しました。

それは、リクエストメソッドに問題があるため、ajaxでファイルのダウンロードリクエストを記述することができません。

次のように書くだけです:

<a href="/media">点击下载Excel</a>
或者
location.href = &#39;/media&#39;;

今回クリックしてダウンロードすると、次のような理想的な効果が表示されます。


次に、ダウンロードリクエストをAjaxで送信できない理由を要約します:

理由: レスポンスのため、一般的なリクエストブラウザは、png、ファイルの生成など、サーバーによって出力されたレスポンスを処理します。ただし、ajaxリクエストは「文字型」リクエストのみ、つまりリクエスト内容はテキスト型で格納されます。ファイルはバイナリ形式でダウンロードされますが、返された応答は読み取ることができますが、単純に言うと、js はブラウザのダウンロード処理機構やプログラムを呼び出すことができません。

関連する推奨事項:

ファイルのダウンロードに Ajax リクエストを使用できない

Ajax リクエストでファイルをダウンロードできない理由

ajax を使用できないファイルのダウンロードの代替ソリューション

以上がajaxでダウンロードリクエストが送信できない原因の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。