MozTW 討論區 https://forum.moztw.org/ |
|
XMLHttpRequest + multipart/form-data = ? https://forum.moztw.org/viewtopic.php?f=13&t=20373 |
第 1 頁 (共 1 頁) |
發表人: | GlinX [ 2007-09-17, 23:47 ] |
文章主題 : | XMLHttpRequest + multipart/form-data = ? |
一般在使用 XMLHttpRequest 做傳送資料時 setRequestHeader() 中 "Content-Type" 的設定通常是 "application/x-www-form-urlencoded" 這時 send() 中傳的參數只要是 "x=....&y=...." 格式就行 但是如果我現在要將一個 enctype="multipart/form-data" 的 form 設定成被 submit 時也用 XMLHttpRequest 傳 請問這時 send() 中的參數要怎麼搞定啊? 囧" (尤其是該 form 中上傳的東西有檔案在內時) |
發表人: | kourge [ 2007-09-18, 13:54 ] |
文章主題 : | |
如果要像 <input type="file"> 一樣傳送檔案,XMLHttpRequest 並不能做到。 實際上如果要達成像 Ajax 一樣在背景上傳檔案,必須建立一個隱形的 iframe,把表單的所有 element 給 clone 到 iframe 內,再進行 submit 的動作。submit 完以後結果再從 iframe 拉回來。 不過...你有用任何 library 嗎?比如說 Prototype 或 jQuery... (請告訴我你跳入 Ajax 大海之前有先選一個好的 library...不然下場會很痛苦滴...) 像 jQuery 有 forms plugin,Prototype 有 AJForm,兩者都可以 Ajax 化你的表單。 |
發表人: | GlinX [ 2007-09-18, 15:48 ] |
文章主題 : | |
kourge 寫: 如果要像 <input type="file"> 一樣傳送檔案,XMLHttpRequest 並不能做到。 實際上如果要達成像 Ajax 一樣在背景上傳檔案,必須建立一個隱形的 iframe,把表單的所有 element 給 clone 到 iframe 內,再進行 submit 的動作。submit 完以後結果再從 iframe 拉回來。 嗯....那這樣怎麼得知 submit 完成呢? (就是說相當於在 XMLHttpRequest 裡 ready state=4 的時候) 在那個 iframe 上面加上 onload 事件來偵測嗎? kourge 寫: 不過...你有用任何 library 嗎?比如說 Prototype 或 jQuery...
(請告訴我你跳入 Ajax 大海之前有先選一個好的 library...不然下場會很痛苦滴...) 像 jQuery 有 forms plugin,Prototype 有 AJForm,兩者都可以 Ajax 化你的表單。 我目前是有試用過 Ext 跟 Prototype 的 Lib 啦.... 不過現在我想先從基本開始用起 熟了之後再來用也不遲~XD 謝謝你的回答~ ^^a |
發表人: | legnaleurc [ 2007-09-18, 16:06 ] |
文章主題 : | |
GlinX 寫: 我目前是有試用過 Ext 跟 Prototype 的 Lib 啦....
不過現在我想先從基本開始用起 熟了之後再來用也不遲~XD 做過這種事的我只能說.... 你會被玩死....OTZ IE真的是大魔王 |
發表人: | GlinX [ 2007-09-18, 20:12 ] |
文章主題 : | |
legnaleurc 寫: GlinX 寫: 我目前是有試用過 Ext 跟 Prototype 的 Lib 啦.... 不過現在我想先從基本開始用起 熟了之後再來用也不遲~XD 做過這種事的我只能說.... 你會被玩死....OTZ IE真的是大魔王 哈哈哈哈哈哈....的確....Orz 之前光是為了讓已寫好的一堆 JavaScript 檔相容於 IE 改了整整兩天...囧" 不過我覺得 這樣也算是一種學習吧 至少我可以學到 "X! 死 IE 臭 IE 又不支援這個寫法了!" XDD |
發表人: | kourge [ 2007-09-22, 12:07 ] |
文章主題 : | |
GlinX 寫: 嗯....那這樣怎麼得知 submit 完成呢? (就是說相當於在 XMLHttpRequest 裡 ready state=4 的時候) 在那個 iframe 上面加上 onload 事件來偵測嗎? 首先,iframe 的 src 要設成: 代碼: javascript:false;document.write(""); 然後要用 onload 事件來偵測。 GlinX 寫: legnaleurc 寫: GlinX 寫: 我目前是有試用過 Ext 跟 Prototype 的 Lib 啦.... 不過現在我想先從基本開始用起 熟了之後再來用也不遲~XD 做過這種事的我只能說.... 你會被玩死....OTZ IE真的是大魔王 哈哈哈哈哈哈....的確....Orz 之前光是為了讓已寫好的一堆 JavaScript 檔相容於 IE 改了整整兩天...囧" 不過我覺得 這樣也算是一種學習吧 至少我可以學到 "X! 死 IE 臭 IE 又不支援這個寫法了!" XDD 另外有一種更好、可以魚與熊掌兼得的方法: 每次在 IE 碰壁,就看看 Prototype / Ext / jQuery 有沒有解決辦法,這樣又可以快速解決問題,又可以快速「學習」,不然簡直是在活活浪費生命。靠 IE 浪費青春...太囧了。 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |