jQuery AJAX $ _POST для document.ready? - PullRequest
       5

jQuery AJAX $ _POST для document.ready?

2 голосов
/ 18 декабря 2009

Я около недели изучаю PHP, jQuery и AJAX и быстро набираю. Я создаю новый видео-сайт с системой комментариев, по которой мне нужно немного помочь. На сайте отображается список миниатюр видео, и когда пользователь нажимает на миниатюру, jquery автоматически меняет HTML-код на этой странице, чтобы показать правильное видео:

    $(".thumbnailcontainer img").click(function() {

    var yt_vid = $(this).attr("id");

    $("#youtube").fadeOut(300, function() {
        //$("#content").append('<img src="img/design/icons/loading.gif" alt="Currently Loading" id="loading" class="loading" />');
        $("#youtube").replaceWith('<object id="youtube" type="application/x-shockwave-flash" style="width:640px; height:385px; display:none;" data="http://www.youtube.com/v/' + yt_vid + '&hl=en_US&fs=1&hd=1"><param name="movie" value="http://www.youtube.com/v/' + yt_vid + '&hl=en_US&fs=1&hd=1" /><param wmode="transparent"><\/param><\/object>');
        /*$("#loading").fadeOut(500, function() {
            $(this).remove();
        });*/

        $('#youtube').fadeIn(1000);
    });

(Я временно прокомментировал значок загрузки, потому что я пытаюсь выяснить, как отобразить его поверх видео на YouTube, а не толкать внизу под ним ... если вы можете ответить на этот вопрос, бонусные баллы для вас. )

В любом случае, в зависимости от того, какое видео показывается, мне нужно, чтобы комментарии, связанные с этим видео, отображались внизу. Я хотел, чтобы комментарии также динамически изменялись при нажатии, поэтому я создал этот код:

    //Send POST data to PHP script to switch to correct comments
//Select Thumbnail's second parent's ID attr on click
    var commentsID = $(this).parents("div:eq(1)").attr("id");

    $.ajax({
        url: 'php/comments.inc.php',
        type: 'POST',
        data: 'commentsID=' + commentsID,
        success: function(html) {
                $('#comments').html(html);
                $("#db").attr("value", '' + commentsID + '');
        }
    });
});

Это, по сути, захватывает имя таблицы MySQL из атрибута id миниатюры, отправляет его в скрипт, который возвращает правильные комментарии, и устанавливает скрытое значение формы, которое сообщит форме, в какую таблицу отправлять комментарии.

Чтобы определить последнее добавленное видео и вернуть правильные комментарии, я подумал о том, чтобы отправить ajax-сообщение с идентификатором таблицы первого эскиза о загрузке документа в скрипт, добавить возвращаемые комментарии и задать скрытое значение. через ajax.

Мой вопрос: является ли вышеуказанная практика плохой идеей? То есть мне кажется неэффективным делать так много почтовых запросов, чтобы переключиться на правильные комментарии - разве это не ресурсоемкий процесс? Кроме того, безопасно ли иметь имена таблиц моей базы данных легко видимыми в атрибуте id моих миниатюр, чтобы мой сценарий мог указать, к какой базе данных подключаться?

Спасибо за вашу помощь и любые предложения по пути. Это мой первый пост здесь, и он мне кажется очень полезным сайтом.

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

Наличие одного или даже нескольких запросов ajax при загрузке страницы может на самом деле немного ускорить ваше время загрузки из-за его асинхронного характера. Люди часто делают несколько запросов AJAX при загрузке, и это техника, которая ускоряет загрузку страниц.

Возможно, вы захотите вернуть обратно более стандартизированный тип данных. Если вы отправили обратно содержимое и метаданные из комментариев в виде строки json, вы можете создать комментарии самостоятельно и сохранить значительный объем передачи (все только повторяющиеся теги html).

Еще одна хитрость, используемая несколькими веб-сайтами, заключается в шарнире загрузки комментариев в область просмотра. Если комментарии не видны (если они находятся ниже сгиба), то нет особых причин их загружать. Затем, когда / если пользователь прокручивает страницу вниз, вы можете сделать запрос в этот момент.

Что касается бонусных баллов за флэш-видео, вам нужно рассмотреть параметр, известный как wmode и установите его на transparent. Вы также можете рассмотреть возможность использования стандартного инструмента инъекции SWF, такого как swfobject (или его версия плагина jquery), чтобы добавить эти видео на страницу.

0 голосов
/ 18 декабря 2009

Возможно, вы захотите использовать loading.gif для загрузки комментариев. Сценарий, который отображает видео с YouTube, будет запущен мгновенно, без каких-либо задержек, поскольку он просто внедряет HTML на страницу. Фактическая загрузка видео не зависит от вашей страницы.

Что касается loading.gif, нажимающего на видео, вам потребуется CSS position:absolute; с z-индексом выше 1 для этого изображения. Это возьмет изображение вне контекста из потока страницы и позволит ему наложить видео. Вы можете расположить изображение по центру, используя верхний и левый свойства CSS. Убедитесь, что ваше изображение и видео являются контейнером с position:relative;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...