调用按钮上的.asp页面点击和jQuery Ajax

问题描述:

我有一个.asp页面,它基于数据库中的数据创建和优化。现在我需要打开这个页面,并使用jquery ajax单击按钮创建excel。我试过的代码如下:调用按钮上的.asp页面点击和jQuery Ajax

$(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数据库运行了查询。它获取大约10,000条记录。所以我在where条件中加了一个ROWNUM < = 30。现在我在AJAX调用中没有收到任何错误。状态是200.但.xls文件未生成。

请让我知道我在这里做的错误。

+1

如果直接调用ExcelExport.asp页面,会发生什么情况?你也有服务器错误吗? – mjw

+2

检查你的URL路径。并在后面插入一个中断点。 –

+0

没有,如果我直接打电话给我的网页我没有得到错误。所有页面都在同一个文件夹中。 –

我解决了这个问题,方法是移除ajax调用并在action标签中插入我的按钮,其中action =“ExportExcel.asp”。感谢@SearchAndResQ指出。我的座右铭是不导航到ExportExcel.asp页面。所以试图用Ajax做。 @mjw指出了Response.BinaryWrite。我没有尝试过。我会尽力而为,保留在我的兵工厂里会很好。