2011-01-27 11 views
2

ダウンロードポップアップダイアログHTTP POSTでAjax経由でファイルをダウンロードするにはどうすればいいですか?

window.location = "someUrl" 

または単にようにHTTP GETメソッドを送信するリンクを持っているとして表示することができます。私はこれをうまくやった。

しかし、私はHTTP POSTでAjaxをやりたいと思っています。 POST本体には、サーブレット側で次に

{"val1":"key1", "val2":"key2"} 

のようなJSONを持って、それはJSONを読み、データは、クエリデータに基づいてExcelを生成取得するためにDBに対してクエリを実行します。

私がそれを稼働させることができない部分はクライアント側です。

私のサーブレットresources/report/scheduleは、Excelファイルを生成することを保証しています。

このアヤックスを使用している場合、ダウンロードダイアログをポップアップしません:( は、誰もがAjaxでのダウンロードダイアログを持っているどのように私を助けることはできますか?

function post25() { 
      var jsonInput = {}; 
      jsonInput['作業区コード'] = "481"; 
      jsonInput['機械コード'] = "11"; 
      jsonInput['作業日'] = "2000/01/01"; 
      jsonInput = JSON.stringify(jsonInput); 

      var ajaxRequest = new XMLHttpRequest(); 
      ajaxRequest.onreadystatechange = function() { 
       if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { 
        var res = ajaxRequest.responseText; 
        //location.href = "../resources/report/schedule"; 
       } 
       else if(ajaxRequest.status == 409 || ajaxRequest.status == 500 || ajaxRequest.status == 204) { 
        alert(ajaxRequest.status); 
        document.getElementById("showMessage").innerHTML = ajaxRequest.responseText; 
       } 
      } 
      ajaxRequest.open("POST", "../resources/report/schedule", true); 
      ajaxRequest.setRequestHeader("Content-Type", "application/json"); 
      ajaxRequest.send(jsonInput); 
     }//end post25() 

答えて

10

AJAXを使用してファイルをダウンロードするために許可されていないセキュリティ上の理由ため。

+0

でも可能ですか?私はGET not POSTを使って多くの例を見てきましたtho –

+2

* NO * ajaxを使用するとダウンロードファイルを起動できません –

+0

これは本当に面白いですね。 Webページをリフレッシュせずに標準の非Ajax POST。 –

関連する問題