0

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 は大きくないので、ここにすべてを投稿するにはやり過ぎかもしれません。親切な魂が同情して私を助けてくれるなら、上に投稿したリンクから入手できます。

4

1 に答える 1

0

'return' を使うべきではありませんが、'echo' を試してください。

ただし、この場合、アクションにビュー ファイルを使用していないため、「autoRender」も無効にする必要があります。

$this->autoRender = false;

そうしないと、CakePHP は「ビューが見つかりません」という例外をスローします。

さらに、CakePHP 内に投稿されたデータを取得するには、Requestオブジェクトを使用します。

例えば:

$this->autoRender = false;

if($this->request->is('post')) {
    echo 'data is posted. This is the content of the request:';
    debug($this->request->data);
} else {
    echo 'no form is posted';
}

最後に、JSON データを返したい場合は、マニュアルの次の部分を参照してください。

http://book.cakephp.org/2.0/en/controllers/request-response.html#cakeresponse

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html

于 2013-04-11T23:24:56.993 に答える