Javascript PHPExcel下载和JS返回form.submit

Javascript PHPExcel下载和JS返回form.submit,javascript,php,json,phpexcel,Javascript,Php,Json,Phpexcel,我正在调用一个PHP脚本生成一个excel文件,然后动态下载它 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename=iva.xls"); $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save('php://output'); 在这段代码之后,我以

我正在调用一个PHP脚本生成一个excel文件,然后动态下载它

 header('Content-Type: application/vnd.ms-excel');
 header("Content-Disposition: attachment;filename=iva.xls");
 $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 
 $objWriter->save('php://output');
在这段代码之后,我以以下内容结束:

 $aReturn[]= array('result'=>true);
 exit(json_encode($aReturn));
在第一个时刻,我开始调用这个PHP使用提交按钮。。。然后(尝试获取进度条),我决定使用javascript调用此php,并使用以下代码:

 $.messager.progress(); 
   var urlProtax="taxes/processtax.php?start=" + cStartDate + '&end='+ cEndDate ;
   $('#taxesForm').form('submit',{
         url: urlProtax,
         onSubmit: function(datt){
             var isValid = $(this).form('validate');
             if (!isValid){                           
                 $.messager.progress('close');                         
             }
             return isValid;
         },
         success: function(jdatos){
             alert('alert data '+ jdatos);
             data = eval('('+jdatos+')');
             if(data[0]['result']===true){
                 $.messager.progress('close');
                 $('#taxesWin').window('close');

                 return true;
             }else{
                 $.messager.progress('close');
                 var iderror = data[0]['error'];
                 $.messager.alert("ERROR (" + iderror +")" , gt.gettext('Unknown Error'), 'error'); 
                 $('#taxesWin').window('close');
             }
         },
         error: function(xhr) {
         alert('Error! Status = ' + xhr.status);}

 });
Excel文件正在创建中!!!但我从未得到关闭进度条的json响应


恕我直言,

Excel文件是二进制文件,JSON不直接支持二进制格式。
如果您使用像CSV这样的ascii格式,您可能会有更好的运气。正常的解决方案不是尝试通过javascript获取返回,而是简单地“链接”到taxes/processtax.php脚本。目前,您正试图在一个响应中返回Excel文件流和json编码的结果;一个响应不能同时是application/vnd.ms-excel和application/json,但我使用带有进度条的ajax调用调用php的所有web应用程序。。。接受您的推荐将影响我向应用程序操作员显示进度条的方式。正如我在帖子中所说,我已经采用了这种方法。如果是这样的话,我就无能为力了,我以前从未遇到过一个脚本可以在一个请求中返回多个内容类型,所以我完全不懂。我根本无法理解它如何在不破坏PHPExcel输出的情况下工作。我不知道,但是。。。可以在php PHPExcel保存方法之后“更改”输出。。。所以我可以通过json编码发送一个返回OK。这里我有一个理论上的疑问。。。在使用Header()的过程中。。。之后。。php输出是“脏的”,所以我不能用JSON简单地返回true来“返回”?