我有以下从数据库中提取数据的功能.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;; }
Shog9.. 14
AJAX是......错误的选择.将用户重定向到将使用正确的MIME类型向下发送数据的服务器资源,并让浏览器找出如何处理它.
AJAX是......错误的选择.将用户重定向到将使用正确的MIME类型向下发送数据的服务器资源,并让浏览器找出如何处理它.
在HTML中,我有一个带有串行输入元素的表单和一个调用JavaScript函数的按钮 onclick="exportExcel();
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是一个从数据库返回数据的对象,发送你自己的html表或任何你想要的.