ホームページ >バックエンド開発 >PHPチュートリアル >ajaxでダウンロードリクエストが送信できない原因
この記事で共有した内容は、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 = '/media';
今回クリックしてダウンロードすると、次のような理想的な効果が表示されます。
次に、ダウンロードリクエストをAjaxで送信できない理由を要約します:
理由: レスポンスのため、一般的なリクエストブラウザは、png、ファイルの生成など、サーバーによって出力されたレスポンスを処理します。ただし、ajaxリクエストは「文字型」リクエストのみ、つまりリクエスト内容はテキスト型で格納されます。ファイルはバイナリ形式でダウンロードされますが、返された応答は読み取ることができますが、単純に言うと、js はブラウザのダウンロード処理機構やプログラムを呼び出すことができません。
関連する推奨事項:
ファイルのダウンロードに Ajax リクエストを使用できない
ajax を使用できないファイルのダウンロードの代替ソリューション
以上がajaxでダウンロードリクエストが送信できない原因の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。