Re: [問題] post值之後, 用php readfile下載檔案失敗

看板Ajax作者 (大鳥)時間14年前 (2011/08/11 22:25), 編輯推噓3(3013)
留言16則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《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函式產生下載檔案的動作

08/11 12:37,
Header的content-type問題
08/11 12:37

08/11 15:17,
即是三樓所說 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

08/11 22:51, , 1F
你可以查查各web server傳檔的content-type是什麼
08/11 22:51, 1F

08/11 22:51, , 2F
像是apache是X-Sendfile,交給web去傳檔案會比較好
08/11 22:51, 2F

08/11 22:52, , 3F
不過也是不清處$.ajax會怎麼處理
08/11 22:52, 3F

08/11 22:52, , 4F
以你的解法來說,可以在ajax的success事件中加上:
08/11 22:52, 4F

08/11 22:53, , 5F
document.location.href = url; 這樣就會自己跳你要的LINK
08/11 22:53, 5F

08/11 23:02, , 6F
請問你的意思是還是content-type的問題嗎?
08/11 23:02, 6F

08/11 23:03, , 7F
那為什麼單獨執行quering.php可以下載
08/11 23:03, 7F

08/11 23:03, , 8F
但是用JQ去呼叫他就不行呢? 感謝回應
08/11 23:03, 8F

08/11 23:12, , 9F
應該這麼說,我在寫傳檔時都會叫webserver去傳,不用PHP傳
08/11 23:12, 9F

08/11 23:13, , 10F
而都是跳blank出來就會自動下載了
08/11 23:13, 10F

08/11 23:14, , 11F
在回你那篇時,我沒有留意到你的主程式是用ajax去傳,
08/11 23:14, 11F

08/11 23:15, , 12F
$.ajax對於回傳值處理有限制,像是HTML、JSON之類的,處理
08/11 23:15, 12F

08/11 23:16, , 13F
方式都不一樣,這部份可能要看jQuery的原始碼~(爆)
08/11 23:16, 13F

08/11 23:17, , 14F
我比較傾向單純的作法,像是叫ws去傳、用FORM POST或GET
08/11 23:17, 14F

08/11 23:20, , 15F
我回文好了XD
08/11 23:20, 15F

08/11 23:26, , 16F
感謝XD
08/11 23:26, 16F
文章代碼(AID): #1EG-PAka (Ajax)
文章代碼(AID): #1EG-PAka (Ajax)