使用jQuery使用AJAX发送Excel数据

时间:2008-09-29 17:42:20

标签: jquery ajax excel

我有以下从数据库中提取数据的功能。 ajax调用正常工作。如何将成功函数中的制表符分隔数据发送给用户?将contect类型设置为“application / vnd.ms-excel”不起作用。成功警报显示格式正确的数据。

     function SendToExcel() {
       $.ajax({
           type: "GET",
           url: "/Search.aspx",
           contentType: "application/vnd.ms-excel",
           dataType: "text",
           data: "{id: '" + "asdf" + "'}",
           success: function(data) {
              alert(data);
           },
           error: function (jqXHR, textStatus, errorThrown) {
              alert(jqXHR.responseText);
       }});
     }

我不想在浏览器中显示数据 - 我想将其发送到Excel。

编辑:我找到了一种方法来做我想做的事。我没有将用户重定向到提示他们保存/打开Excel文件的新页面,而是在隐藏的iframe中打开了页面。这样,用户单击一个按钮,系统会提示他们保存/打开Excel文件。没有页面重定向。是Ajax吗?不,但它解决了我遇到的真正问题。

这是我点击按钮时调用的功能:

     function SendToExcel() {
        var dataString = 'type=excel' +
            '&Number=' + $('#txtNumber').val() + 
            '&Reference=' + $('#txtReference').val()

        $("#sltCTPick option").each(function (i) {
             dataString = dataString + '&Columns=' + this.value;
        });

        top.iExcelHelper.location.href = "/Reports/JobSearchResults.aspx?" + dataString;;
     }

4 个答案:

答案 0 :(得分:13)

AJAX是......错误的选择。将用户重定向到将使用正确的MIME类型向下发送数据的服务器资源,并让浏览器找出如何处理它。

答案 1 :(得分:5)

HTML中的

我有一个带有串行输入元素的表单和一个调用JavaScript函数的按钮onclick="exportExcel();

<小时/> 然后在JavaScript文件中:

function exportExcel(){
    var inputs = $("#myForm").serialize();
    var url = '/ajaxresponse.php?select=exportExcel&'+inputs;
    location.href = url;
}

最后是一个响应某事的数据透视文件

PHP代码:

case 'exportExcel':{
                     ob_end_clean();
                     header("Content-type: application/vnd.ms-excel");
                     header("Content-Disposition: attachment;
                     filename=exportFile.xls");
                     echo $html->List($bd->ResultSet($_GET));
                }

$ html是一个处理html的对象,而$ bd是一个从Database返回数据的对象 发送你自己的html表或任何你想要的。

答案 2 :(得分:2)

由于它使用JavaScript,因此AJAX受JavaScript设计限制的约束,其中包括与客户端计算机上的其他进程交互。在这种情况下,这是一件好事;您不希望网站能够自动加载包含恶意宏的Excel文档。

如果要在浏览器中显示数据,可以使用AJAX;否则,您只想提供一个Excel文档的链接,让浏览器的常规下载处理功能找出要做的事情。

答案 3 :(得分:0)

您可能不希望使用javascript执行此操作。

我认为您要做的是创建一个包含我的类型 application / csv 的响应页面,然后将用户重定向到该页面。我可能会做一个window.open(),因为用户不会丢失他们当前所在的页面。