Прямая загрузка и возврат URL API YouTube, возможно в Ajax? - PullRequest
0 голосов
/ 20 января 2011

Хорошо, вот ситуация.

У меня есть API YouTube для загрузки видео. После загрузки возвращается http://example.com/?status=200&id=3-1234xyz.

В идеале, я хотел бы, чтобы это было отправлено и загружено через Ajax, а затем возвращен идентификатор для немедленного отображения на странице (которая в конечном итоге покажет URL или код для вставки видео). Я использую JQuery, но я в конце концов со всем этим. Любая помощь, ссылки и т. Д. С благодарностью!

1 Ответ

2 голосов
/ 20 января 2011

Используйте iframe. Вы просто публикуете форму загрузки файла в iframe, когда она завершает загрузку (вы можете захватить это событие с помощью $ ('# iframe'). Ready (...)), затем вы можете захватить идентификатор видео (потому что тот же домен).

Таким образом, ваша форма загрузки будет выглядеть следующим образом:

<form action="...?nexturl=IFRAME_URL" method="post" enctype="multipart/form-data" target="uploader">
<p>Please select the video you wish to upload to YouTube:</p>
<input type="file" name="file" value="" />
<input type="hidden" name="token" value="" />
<button>Upload</button>
</form>
<iframe id="uploader" name="uploader" style="display: none; width: 1px; height: 1px; border: none;"></iframe>

И тогда все, что нужно вашему iframe, - это просто передать идентификатор видео родителю (или вы можете прочитать его у родителя, но я предпочитаю первое):

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript">
    <!--
        var vars    = getVars();

        $( document ).ready( function()
        {
            parent.selectVideo( vars[ 'id' ] );
        });

        function getVars()
        {
            var vars = [];
            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
            var hash;

            for(var i = 0; i < hashes.length; i++)
            {
                hash = hashes[i].split('=');

                vars.push(hash[0]);
                vars[hash[0]] = hash[1];
            }

            return vars;
        }
    -->
    </script>
    <title></title>
</head>
<body>
</body>

И работа сделана: D

...