昨天使用FF和dojo作查詢功能還好好的,今天用了IE後就發生 XMLHttpTransport error callback failed: [object Error] 錯誤 --見
一開始沒有用evt full debug還看不出來上面的錯誤,後來才發現這是IE的一個bug
難怪昨天使用firefox還好好的,花了整個下午自己受不了,才慢慢找哪裡不同,最後發現真的是更新處理時放在tr 或 table裡面都會錯誤。最後還是改用div避免tr相關標籤。這次是因為我作查詢的頁面剛好有利用表格才會出錯,先前回傳更新都直接用div就沒問題了。。。
2007年5月5日 星期六
IE watchInFlight Error ,當使用ajax讀取到 的情況
2007年4月22日 星期日
Use dojo for file upload
最近這一兩天都在處理檔案上傳的部分,對於基本的檔案上傳功能利用Jakarta Commons FileUpload就可以達成,但是要使用ajax的時候我選擇了dojo作為我的web ajax框架。通常在看完dojo的demo後,真是另我感到驚為天人。這麼樣的方便,看起來是省下一些非同步呼叫的語法。
基本上一開始我直接參考的Ajax教學是IBM的一系列Ajax文章,當然你也可以有其他的選擇,像是ajax學習筆記。後來真的開始撰寫我的web form時,是直接使用dojo。dojo是個框架,他是個不錯用的框架,當然也提供一些widget可以使用。在看完dojo getting started的Hello World後,想必對dojo.io.bind();的使用有一定的了解。但是納悶的是如何才能使用upload的傳輸呢transport?很早 Alex's file upload with dojo 已經說明了一個簡單的方法就可以使用dojo.io.bind()來處理有file field的form了。這點非常不容易,他述說上只要加上
dojo.require("dojo.io.IframeIO");
的宣告就可以了。而為何只是一般的dojo.io.bind()無法處理有檔案傳輸的form這點可以參考dojo book Introduction to dojo.io.bind 或Alex所述, XMLHTTP transport無法處理file 傳輸,這點就可以透過dojo的 IframeIO來處理了。但事實上還是發生一些問題,在我實際的使用上發現,問題還有為解決。一開始未加入IframeIO宣告時,是按鈕下去連傳都沒傳就會說錯誤,但是簡單宣告IframeIO後,是可以傳輸給server去作處理了。結果檔案也成功接收獲得,但是在dojo 的callback處理時,就是一直出現error: [object ],這點在Alex上得留言也知道有些人發生,討論的也很熱烈。就是得不到一個完整的解決方式。其中也從
http://download.dojotoolkit.org/release-0.2.2/dojo-0.2.2-ajax/tests/io/test_IframeIO.html
測試IframeIO,結果也一樣有error [object] 回傳處理問題,最後也得知這是一個bug。可以手動從iframe讀取資料。不過當然還有一些細節,server response需要把minetype 從 text/plain 改成 text/html ,再來處理結果的回傳,在server還要以textarea包覆起來。而回傳成html之後,在從iframe中取出textarea的質處理即可。看起來就像:
dojo.io.bind({
formNode: dojo.byId( 'myForm' ),
mimetype: 'text/html',
load: function(type, doc) {
window.alert( doc.getElementsByTagName('textarea' )[0].value );
}
error: function(type, err) {
window.alert("Failure:" + err.message);
}
});
但不要忘了加上一個隱藏的iframe在網頁中,而form的target指向他。
如此就終於可以用dojo來正常運作了。
在此因為dojo跟 file upload有關的中文文章很少,一直沒有很好的實際 source code來參考。搞不好已經有新的解決方式,至少現在我可以正常的處理我的 file upload 和 IframeIO return 了。
而之前一直在傳輸完檔案後的錯誤,的確是因為minetype 設成 text/plain就不行了。
訂閱:
文章 (Atom)
2007年4月22日 星期日
Use dojo for file upload
最近這一兩天都在處理檔案上傳的部分,對於基本的檔案上傳功能利用Jakarta Commons FileUpload就可以達成,但是要使用ajax的時候我選擇了dojo作為我的web ajax框架。通常在看完dojo的demo後,真是另我感到驚為天人。這麼樣的方便,看起來是省下一些非同步呼叫的語法。
基本上一開始我直接參考的Ajax教學是IBM的一系列Ajax文章,當然你也可以有其他的選擇,像是ajax學習筆記。後來真的開始撰寫我的web form時,是直接使用dojo。dojo是個框架,他是個不錯用的框架,當然也提供一些widget可以使用。在看完dojo getting started的Hello World後,想必對dojo.io.bind();的使用有一定的了解。但是納悶的是如何才能使用upload的傳輸呢transport?很早 Alex's file upload with dojo 已經說明了一個簡單的方法就可以使用dojo.io.bind()來處理有file field的form了。這點非常不容易,他述說上只要加上
http://download.dojotoolkit.org/release-0.2.2/dojo-0.2.2-ajax/tests/io/test_IframeIO.html
測試IframeIO,結果也一樣有error [object] 回傳處理問題,最後也得知這是一個bug。可以手動從iframe讀取資料。不過當然還有一些細節,server response需要把minetype 從 text/plain 改成 text/html ,再來處理結果的回傳,在server還要以textarea包覆起來。而回傳成html之後,在從iframe中取出textarea的質處理即可。看起來就像:
如此就終於可以用dojo來正常運作了。
在此因為dojo跟 file upload有關的中文文章很少,一直沒有很好的實際 source code來參考。搞不好已經有新的解決方式,至少現在我可以正常的處理我的 file upload 和 IframeIO return 了。
而之前一直在傳輸完檔案後的錯誤,的確是因為minetype 設成 text/plain就不行了。
基本上一開始我直接參考的Ajax教學是IBM的一系列Ajax文章,當然你也可以有其他的選擇,像是ajax學習筆記。後來真的開始撰寫我的web form時,是直接使用dojo。dojo是個框架,他是個不錯用的框架,當然也提供一些widget可以使用。在看完dojo getting started的Hello World後,想必對dojo.io.bind();的使用有一定的了解。但是納悶的是如何才能使用upload的傳輸呢transport?很早 Alex's file upload with dojo 已經說明了一個簡單的方法就可以使用dojo.io.bind()來處理有file field的form了。這點非常不容易,他述說上只要加上
dojo.require("dojo.io.IframeIO");的宣告就可以了。而為何只是一般的dojo.io.bind()無法處理有檔案傳輸的form這點可以參考dojo book Introduction to dojo.io.bind 或Alex所述, XMLHTTP transport無法處理file 傳輸,這點就可以透過dojo的 IframeIO來處理了。但事實上還是發生一些問題,在我實際的使用上發現,問題還有為解決。一開始未加入IframeIO宣告時,是按鈕下去連傳都沒傳就會說錯誤,但是簡單宣告IframeIO後,是可以傳輸給server去作處理了。結果檔案也成功接收獲得,但是在dojo 的callback處理時,就是一直出現error: [object ],這點在Alex上得留言也知道有些人發生,討論的也很熱烈。就是得不到一個完整的解決方式。其中也從
http://download.dojotoolkit.org/release-0.2.2/dojo-0.2.2-ajax/tests/io/test_IframeIO.html
測試IframeIO,結果也一樣有error [object] 回傳處理問題,最後也得知這是一個bug。可以手動從iframe讀取資料。不過當然還有一些細節,server response需要把minetype 從 text/plain 改成 text/html ,再來處理結果的回傳,在server還要以textarea包覆起來。而回傳成html之後,在從iframe中取出textarea的質處理即可。看起來就像:
dojo.io.bind({
formNode: dojo.byId( 'myForm' ),
mimetype: 'text/html',
load: function(type, doc) {
window.alert( doc.getElementsByTagName('textarea' )[0].value );
}
error: function(type, err) {
window.alert("Failure:" + err.message);
}
});
但不要忘了加上一個隱藏的iframe在網頁中,而form的target指向他。如此就終於可以用dojo來正常運作了。
在此因為dojo跟 file upload有關的中文文章很少,一直沒有很好的實際 source code來參考。搞不好已經有新的解決方式,至少現在我可以正常的處理我的 file upload 和 IframeIO return 了。
而之前一直在傳輸完檔案後的錯誤,的確是因為minetype 設成 text/plain就不行了。
訂閱:
文章 (Atom)