下载弹出对话框可以通过以下方式显示
window.location = "someUrl"
或者只是有一个发送HTTP GET方法的链接,依此类推。我已经成功地做到了。
但是现在我想用HTTP POST做Ajax。POST正文具有JSON之类的
{"val1":"key1", "val2":"key2"}
然后在Servlet端,它读取JSON并针对DB执行查询以获取数据,然后根据查询数据生成Excel。
我无法正常工作的部分是客户端。
假设我的servlet在resources/report/schedule生成Excel文件。
resources/report/schedule
使用Ajax时,这不会弹出下载对话框:(有人可以帮我如何使用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()
出于安全原因 ,不允许使用ajax下载文件 。