jquery http://code.google.com/p/ocupload/wiki/Documentationの「ワンクリックアップロード」プラグインを使用しようとしています
これは通常の input type="file" を任意の要素 (div など) に変更するプラグインであるため、この div をクリックするとファイル ブラウザーが開き、アップロードするファイルを選択できます。次に、iframe を含む隠しフォーム somewho を送信します。この概念はよく知られていますが、私にはわかりません。
とにかく、これまでのところとても良いです...ファイルブラウザを開くdivがあります。
問題は、ファイルが選択されると、プラグインが、定義したアクションにフォームを自動送信することになっていることです。これがうまくできていないようで、フォームのアクションの狙っているところに関係があるのではないかと思います。
したがって、新しい「タイル」を追加するための私の見解では、次のとおりです。
<div id="TileImageUpload">Upload an image</div>
次に、javascript を div にアタッチします。
$(document).ready(function(){
//one click image upload
var myUpload = $('#TileImageUpload').upload({
name: 'file',
action: '../tiles/uploadImage',
enctype: 'multipart/form-data',
params: {upload:'Upload'},
autoSubmit: true,
onSubmit: function() {
alert('submitted');
$('#upload_status').html('').hide();
loadingmessage('Please wait, uploading file...', 'show');
},
onComplete: function(response) {
alert(response);
},
onSelect: function() {}
});
});
上記のアクション パラメータは、私の TilesController action=>uploadImage を指すことを意味します。次のようになります。
function uploadImage() {
if ($_POST["upload"]=="Upload") {
return 'wooHoo';
} else {
return 'BooHoo';
}
}
また、「WoHoo」などをエコーバックしようとしましたが、違いはありませんでした。
したがって、基本的にフォームの投稿が成功した場合は、WooHoo を javascript に返して、警告する必要があります。
これは起こっていません。誰かが理由を知っていますか。私が言ったように、おそらくフォームアクションに関係していると思いますが、考えられる限りのことを試しました。
プラグインの実際の JS は大きくないので、ここにすべてを投稿するにはやり過ぎかもしれません。親切な魂が同情して私を助けてくれるなら、上に投稿したリンクから入手できます。