要件:エラーがない場合は、エラーメッセージを与えるために、バックエンドのエラーニーズが適切にダウンロードすることができた場合、フロントエンドは、ダウンロードするには、バックエンドインターフェースを呼び出し、ファイルをダウンロードしてください。
ソリューション:
オプション1:最初の考えは、まず二つのインターフェースに分割され、あなたがダウンロードできる場合は、ダウンロードのダウンロードを行くことができるならば、尋ねます
オプションII:区別する状態コードを介してネイティブAJAXリクエスト
xhrGet関数(タイプ、URL、FN){ // XMLHttpRequestオブジェクトは、バックグラウンドでサーバとデータを交換するために使用される VAR =新しい新しいXHRのXMLHttpRequestを(); xhr.open(タイプ、URL、真の); xhr.setRequestHeader(「X - Requested- ''とのXMLHttpRequest '); xhr.setRequestHeader('同意''ファイルアプリケーション/ JSON、text / plainで、* / *「); xhr.onreadystatechange =関数(){ //のreadyState ==要求4完了している。 場合(xhr.readyState == this.HEADERS_RECEIVED){ IF(xhr.getResponseHeader( 'タイプのコンテンツ')== 'ファイルアプリケーション/ vnd.openxmlformats-officedocument.spreadsheetml.sheet'){ xhr.abort(); window.locationの。 URL = HREF; リターン; } } IF(xhr.readyStateは== 4 && xhr.status == 200){ //从服务器获得数据 {試みる RES = JSON.parse(xhr.responseText)ましょう。 もし(res.rc == '9'){ window.location.href = location.protocol + "//" + location.host + '/ API /アカウント/ホーム?URL =' + encodeURIComponentで(location.protocol + "//" + location.host + '/#/ホーム'); 返します。 } IF(res.rc == '3'){ window.location.href = "#/ 403"。 返します。 } fn.call(これ、RES)。 }キャッチ(エラー){ } } }。 xhr.send(); }
それがアプリケーションである場合はreadyStateのonreadystatechangeにコールバック関数の我々の方法は、対応するサーバのすなわちヘッドのreadyState == this.HEADERS_RECEIVEDが、戻ってきたとき、我々は、コンテンツタイプの頭を取得する別のreadyStateの状態を識別している/ JSONは間違っています情報、正常動作。あなたはこのような「アプリケーション/ vnd.openxmlformats-officedocument.spreadsheetml.sheet」などのExcelファイルなどのコンテンツタイプに対応するファイルをダウンロードした場合、我々は時間をあきらめて、ダウンロードしたファイルへの直接アクセスは、通常ダウンロードします。
readyStateのステータス情報の様々な段階を添付してください。