1

こちらで説明されているフォームを使用して、YouTube アカウントにファイルをアップロードしています。このような:

<form action="<?=$YTurl ?>?nexturl=http://localhost/update-video.php" method="post" enctype="multipart/form-data">
    <input id="file" type="file" name="file"/>
    <input type="hidden" name="token" value="<?=$YTtoken ?>"/>
    <input type="hidden" name="test" value="testvalue1234"/>
    <input type="submit" value="go" />
</form>

しかし、フォームにさらにフィールドを追加する予定であり、アクションが YouTube のサーバーに設定されているため、残りのフィールドを処理できません。誰かがこれに対する回避策を持っていますか? YT がカスタム パラメータを追加して、nexturl で指定されたコールバックに親切にポストしてくれることを期待しています。

前もって感謝します!

4

1 に答える 1

1

フォームを送信する前に、最終的にAJAXを介して他のフォームフィールドを送信することになりました。また、ビデオが適切なレコードに保存されていることを確認するために、ビデオをセッション ID ハッシュで識別します。これが誰かを助ける場合のコードです(jquery.validate.jsにまとめられています):

<script type="text/javascript">
    $(document).ready(function(){
        $("form").validate({
            rules: { ... },
            messages: { ... },
            submitHandler: function (form) {
                if ($('#video_file').val()) {
                    var data = {};
                    $('input').each(function() {
                        data[$(this).attr('name')] = $(this).val();
                    });
                    $.ajax({
                        url: 'process.php', dataType: 'json', type: 'POST', data: data,
                        success: function(response) {
                            if (response.status == '200') {
                                url = '<?=$tokenArray['url']?>?nexturl=http://localhost/update-video.php?hash=' + response.sid;
                                $(form).attr('action', url);                                        
                                form.submit();
                            }
                        }
                    });
                } else if ($('#video_url').val()) {
                    form.submit();
                }
            }
        });

    });
</script>
于 2012-04-06T22:12:00.063 に答える