武之新
dojox.form.Uploaderのtips

dojox.form.Uploaderを使っててほいほいハマるので、ほぼ備忘録としてのメモ。

* POST時に他のデータも渡したい

uploadWithFormData()を使う。uploadOnSelectをtrueにすると勝手にsubmitされてしまうので、ファイルを選択されたらすぐにsubmitしたければ

<button data-dojo-type="dojox.form.Uploader" data-dojo-props="
	id: 'uploader'
	, name: 'uploaded'
	, multiple: false
	, uploadOnSelect: false
	, url: 'xxx'
	, onChange: function(){
		doUpload();
}">upload now!</button>

function doUpload(){
	var uploader = dijit.byId("uploader");
	uploader.onComplete = function(array){
		if (array[0] == "succeeded"){
			// succeeded
		}
		else {
			// failed
		}
		uploader.reset();
	};
	uploader.uploadWithFormData({
		"hoge": "hoehoe"
	});
}

とやっておけば概ねおk

* 1回目は動いたけど、2回目が動かない

ファイル名が同じだとonChangeが発生しない。同じファイル名でもsubmitしたければ、onCompleteの最後のほうでreset()を呼ぶ。

dojoでハマってる

Webアプリを開発中で、ブラウザ側はdojoを使っているのですが、色々とハマっております。現在最も困っているのがdojox.grid.DataGridに埋め込んだdijit.form.Buttonの挙動。
dojox.grid.DataGridがなかなか強力で、これが使いたいためにdojoを選んだわけですが、このgridの各行にbuttonを配置すると途端に挙動が怪しくなってきます。 

続きを読む…