我有一个基于数据库数据创建和优秀的.asp页面。现在我需要打开这个页面并使用jquery ajax创建excel单击按钮。我尝试过的代码如下:
$(document).ready(function(){
$("#export_excel").on("click", function(){
alert("Calling");
$.ajax({
type: "GET",
url: "/ExcelExport.asp",
success: function(data) {
if(data) {
console.log(data);
}
},
error: function() {
console.log("error");
}
});
});
});
一段时间后,我收到500内部错误。任何人都可以指导我如何实现这一目标。
ExportExcel.asp
<%@ LANGUAGE="VBSCRIPT"%>
<!--#include file="ADOVBS.inc"-->
<!--#include file="IASUtil.asp"-->
<!--#include file="includes\cdsconnection.inc"-->
<%
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment; filename=Export.xls"
theSQL = Session("RPT")
Set RS = Connection.Execute(theSQL)
%>
<html>
<head>
<title>CDS Return Report Anticipated</title>
</head>
<body>
<table border="1">
<tr>
<th>
Customer Name
</th>
<th>
Dispute ID
</th>
<th>
Dispute Date
</th>
<th>
INVOICE NUMBER
</th>
<th>
CUST PO NUMBER
</th>
<th>
DISPUTE AMOUNT
</th>
<th>
TMP ORDER NUMBER
</th>
<th>
STATUS DESCRIPTION
</th>
<th>
DISPUTE CLS DATE
</th>
<th>
ROOT CAUSE DESCRIPTION
</th>
<th>
NOTES
</th>
<th>
DMRM
</th>
<th>
ITEM ID
</th>
<th>
DATE RECEIVED
</th>
<th>
ORDER NUMBER
</th>
<th>
SPECREQ
</th>
<th>
ITEM NUMBER
</th>
<th>
DIS COMCODE
</th>
<th>
DIS QUANTITY
</th>
<th>
QTYRCVD
</th>
<th>
DIS_EXT_PRICE
</th>
</tr>
<% DO UNTIL RS.eof %>
<tr>
<td>
<%= RS("CUSTOMER_NAME") %>
</td>
<td>
<%= RS("DISPUTE_ID") %>
</td>
<td>
<%= RS("DISP_DATE") %>
</td>
<td>
<%= RS("INVOICE_NUM") %>
</td>
<td>
<%= RS("CUST_PONUM") %>
</td>
<td>
<%= RS("DISP_AMOUNT") %>
</td>
<td>
<%= RS("TMP_ORDERNUM") %>
</td>
<td>
<%= RS("STATUS_DESCRIPTION") %>
</td>
<td>
<%= RS("DISP_CLS_DATE") %>
</td>
<td>
<%= RS("ROOT CAUSE DESCRIPTION") %>
</td>
<td>
<%= RS("NOTES") %>
</td>
<td>
<%= RS("DMRM") %>
</td>
<td>
<%= RS("ITEM_ID") %>
</td>
<td>
<%= RS("DATERCVD") %>
</td>
<td>
<%= RS("ORDERNUM") %>
</td>
<td>
<%= RS("SPECREQ") %>
</td>
<td>
<%= RS("ITEM_NUM") %>
</td>
<td>
<%= RS("DIS_COMCODE") %>
</td>
<td>
<%= RS("DIS_QUANTITY") %>
</td>
<td>
<%= RS("QTYRCVD") %>
</td>
<td>
<%= RS("DIS_EXT_PRICE") %>
</td>
</tr>
<% RS.MoveNext
LOOP%>
<%Response.End()%>
</table>
</body>
</html>
RPT是包含查询的会话变量。出于安全原因,我无法在此处提供完整查询。但是我已经针对我们的oracle DB运行了查询。它获取大约10,000条记录。所以我在where条件中添加了一个ROWNUM&lt; = 30。现在我在AJAX调用中没有收到任何错误。状态为200.但是没有生成.xls文件。
请让我知道我在这里犯的错误。
答案 0 :(得分:0)
我通过删除ajax调用并在带有action =&#34; ExportExcel.asp&#34;的表单标记中插入我的按钮来解决这个问题。感谢@SearchAndResQ指出这一点。我的座右铭是不要导航到ExportExcel.asp页面。所以试着用Ajax做。 @mjw指出了Response.BinaryWrite。我没试过。我会尝试,保持我的武器库会很好。