[討論] 設計上遇到的程序問題

作者: awa6811 (希望永存)   2014-10-23 09:01:00
大家好
一般我們在設計表單欄位填寫是否符合條件需求多會在,clinet端做判斷再放行上傳到DB;
今天我們就先~擱著~為何多會在clinet判斷完才上傳的觀念:
因為我現在的情況是會把所有表單的資訊一併傳到 web做判斷是否符合條件,才放行到
process 程序。
[填表]C -> [check]W -> [process]W C:clinet W:web
填表完畢 會透過 XHR(ajax) check.php 去做欄位條件判斷,有問題就會傳值回來並透過
alert顯示出來,若判斷正確沒問題就會運行到另一個 XHR(ajax) process.php,去做上
傳數據的處理。
現在問題來了,過去單純傳遞字串;因為當時的 XHR 沒有上傳檔案的api支持,所以整體
上運作不會帶有上傳檔案的程序(檔案基本上是與純文字岔開運作),但是現在 XHR2 支持
了上傳檔案的api,多數人應該都會感到興奮便利,過去 XHR 再傳檔案運程上會是一種
困難點,而在 XHR2 下的 FormData 變得非常便利;但是每次執行便會作上傳的動作,
因為我設計的程序會跑兩次 XHR2 所以變成會運行兩次上傳檔案的動作,有辦法不再改變
現有的程序讓他只在完成第一次欄位判斷後,才作上傳的置能嗎?
作者: mrbigmouth (大嘴先生)   2014-10-23 09:21:00
就第一次檢查時不要塞檔案上傳就好了啊?你是靠什麼環境自動檢查的嗎? 不然基本上不改程式碼而改變功能是不可能的事
作者: awa6811 (希望永存)   2014-10-23 09:42:00
但是我昨天試過,試著把塞檔案的那欄位給空值,但是不行它還是會把我選的檔案上傳完畢才作欄位的判斷程式碼當然是可以被修改的,若不想破壞現有的執行模式下的化可行嗎?我只是很簡單的檢查方式,欄位POST到web,web取值再用php寫好的判斷函數來作欄位判斷
作者: mrbigmouth (大嘴先生)   2014-10-23 10:21:00
你直接把程式碼貼出來吧 你的程式只要不把檔案塞進fr不塞進form data xhr就不會上傳檔案這是肯定的
作者: awa6811 (希望永存)   2014-10-23 10:26:00
那樣子看來 check 的部分就必須用 xhr 純文字的方式了
作者: mrbigmouth (大嘴先生)   2014-10-23 11:27:00
的確 如果你check不用上傳檔案 為何要用formdata?就算用form data你也不需要把整個form塞進裡面.......fileupload button基本上是不會讓你控制的 你所謂的把那欄位塞空值應該是無效的舉動你要做的是不把該檔案欄位塞進form data裡面 不是去操作裡面的值

Links booklink

Contact Us: admin [ a t ] ucptt.com