作者wzbird (大鸟)
看板Ajax
标题Re: [问题] post值之後, 用php readfile下载档案失败
时间Thu Aug 11 22:25:12 2011
※ 引述《wzbird (大鸟)》之铭言:
: query_report.php
: (https://gist.github.com/1138882)
: 他的js, query_report.js
: (https://gist.github.com/1138884)
: 这个档案负责产生页面 , 下拉选单, checkbox等等
: quering.php
: (https://gist.github.com/1138888)
: quering.php根据传来的值, 产生对应的档案之後
: 再用header 叫query_report.php中的download函式产生下载档案的动作
1F:推 UniFish:Header的content-type问题 08/11 12:37
2F:→ LPH66:即是三楼所说 Content-Type 的问题 08/11 15:17
hi, 我一开始也往content-type的方向找了满久的
但是因为单独执行quering.php是正常的, 所以我才会猜是我的jquery有问题
因为这方面我也不熟悉, 我都是去网路上co一些范例来拼凑的,
所以很容易有我不知道而没有考虑到的地方.
後来我不用jquery的post, 单纯用form的action="quering.php", 结果是正常的,
更证明了是jquery的问题, 我才在网路上找了一下, 好像是jquery的post本身的限制
比如这篇的讨论:
http://goo.gl/1OiQA
不过老实说我看不太懂他里面提的workaround是什麽XD
我後来的做法是, quering.php回传一个下载的link, 再让使用者去按,
比较丑的workaround, 不过还交代的过去啦^^
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.46.75
3F:推 UniFish:你可以查查各web server传档的content-type是什麽 08/11 22:51
4F:→ UniFish:像是apache是X-Sendfile,交给web去传档案会比较好 08/11 22:51
5F:→ UniFish:不过也是不清处$.ajax会怎麽处理 08/11 22:52
6F:→ UniFish:以你的解法来说,可以在ajax的success事件中加上: 08/11 22:52
7F:→ UniFish:document.location.href = url; 这样就会自己跳你要的LINK 08/11 22:53
8F:→ wzbird:请问你的意思是还是content-type的问题吗? 08/11 23:02
9F:→ wzbird:那为什麽单独执行quering.php可以下载 08/11 23:03
10F:→ wzbird:但是用JQ去呼叫他就不行呢? 感谢回应 08/11 23:03
11F:推 UniFish:应该这麽说,我在写传档时都会叫webserver去传,不用PHP传 08/11 23:12
12F:→ UniFish:而都是跳blank出来就会自动下载了 08/11 23:13
13F:→ UniFish:在回你那篇时,我没有留意到你的主程式是用ajax去传, 08/11 23:14
14F:→ UniFish:$.ajax对於回传值处理有限制,像是HTML、JSON之类的,处理 08/11 23:15
15F:→ UniFish:方式都不一样,这部份可能要看jQuery的原始码~(爆) 08/11 23:16
16F:→ UniFish:我比较倾向单纯的作法,像是叫ws去传、用FORM POST或GET 08/11 23:17
17F:推 UniFish:我回文好了XD 08/11 23:20
18F:→ wzbird:感谢XD 08/11 23:26