作者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