dojo 要做 AJAX 方式的檔案上傳其實是透過 iframe 來實做才有辦法實做 , 因此 dojo 特別提供一組指令 dojo.io.iframe 方法很簡單 , 網頁範例如下
<script src="/xxx/dojo-path/dojo.js"
djConfig="parseOnLoad: true, isDebug: false"></script>
<script>
dojo.require("dojo.parser");
dojo.require("dojo.io.iframe");
function doUpload() {
dojo.io.iframe.send( {
url: 'test.php',
form: 'frm' ,
method: "post",
handleAs: "json",
load: function(obj , ioArgs) {
alert( obj.message );
} ,
error: function(response, ioArgs) {
console.debug(response);
}
)
}
</script>
<form method="post" id="frm" enctype="multipart/form-data">
上傳的檔案 : <input type="file" name="upfile">
<button onclick="doUpload()">上傳</button>
</form>
在 Server 端要注意一點 , dojo 的方式是需要把回應的 ajax 內容(例如 json格式) 放到一個 <textarea> 內 所以 test.php 會如下
<?php
$response = array( 'status' => 'success' , 'message' => '成功' , );
echo "<textarea>" . json_encode( $response ) . "</textarea>";
?>
要注意 <form> 表單一定要有 method , 據我測試若不指定 method="POST" , FireFox 是會根據 dojo.io.iframe.send() 所指定的方式 POST 送出資料 , 但 IE7 會以 GET 送出
Pigo,你好。 我的後臺是用python寫的,用的是web.py框架,我做web的經驗較少,請問後臺接受到文件後該返回什麽?我前台dojo照你的代碼寫了,上傳是可以,但是上傳成功後總會進error方法,不知道是什麽原因,瀏覽器的控制臺也沒有報錯。
dojo .. 很久沒碰了說 …
這文章也寫很久了 , 技術已經過時
現在幾乎是 jquery , angular 的天下 , 有很多上傳的方式
也有原生的 FormData API (舊的瀏覽器不支援)
dojo.js已經過時?為什麽這麽說?
FormData好像不能用在ie上
不是 jojo 過時,是我文章過時了 @@
我幫你看了一下文件
https://dojotoolkit.org/reference-guide/1.10/dojox/form/Uploader.html
和我當初玩的時候已經差很多
官網看了,但出不來那樣的。
我dojo剛接觸,領導讓用。