Отправка формы с помощью jQuery / Ajax работает только в другое время

Я пытаюсь отправить форму, которая включает в себя загрузку файла через Ajax / jQuery, обработать форму через PHP-скрипт и вернуть результат в div, в котором первоначально находилась форма.

Мой текущий код формы:

<section id="content-right"> <form name="uploader" id="uploader" method="POST" enctype="multipart/form-data"> <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="10485760" /> <input type="file" name="fileselect" id="fileselect" /> <input type="submit" name="submit" id="submit" value="Upload" /> </form> </section> 

И мой текущий сценарий Ajax / jQuery:

 <script> $(function() { $('#uploader').submit(function() { $(this).ajaxSubmit({ type: $(this).attr('method'), url: 'upload-song.php', success: function(response) { $('#content-right').html(response); } }); return false; }); }); 

Мой PHP-скрипт – «upload-song.php» (подробности не имеют значения).

У меня также есть YUI.Pjax, выполняющий обработку обычных ссылок навигации (href) и загружающих их в # content-right (если пользователь нажимает что-либо, я хочу, чтобы он загружался в # content-right).

    С этой настройкой, проводка по нормальным ссылкам работает отлично, все загружается в # content-right, но загрузчик работает только в другое время.

    Например, загрузчик загрузит upload-song.php в # content-right и обработает все отлично, тогда, если я перейду от страницы и попытаюсь загрузить другой элемент, он не будет работать, он просто обновит страницу (если я поставлю action = "upload-song.php" в теге формы, он будет загружать upload-song.php в виде полной страницы, а не в # content-right). После обновления страницы я могу загрузить другой элемент, и он будет работать отлично.

    Я думаю, что это связано с тем, как я прикрепляю свой сценарий Ajax к форме submit (потому что, если я обновляю страницу, она отлично работает), но у меня нет большого опыта работы с этими языками, поэтому я не уверен как это исправить.

    Кроме того, если я отключу YUI.Pjax, он исправляет загрузчик, но, очевидно, нарушает мои ссылки, поэтому я ищу работу.

    Есть идеи?

    Related of "Отправка формы с помощью jQuery / Ajax работает только в другое время"

    Попробуй это:

     $(document).on("submit", "#uploader", function() ... 

    Этот синтаксис позволит событию отправить пузырь в документ. Таким образом, когда раздел #content_right перезагружается, документ сохраняет ответ прослушивания событий, настроенный в функции готовности DOM.