Публиковать данные, не отправляя должным образом с плагином формы jQuery - PullRequest
1 голос
/ 16 августа 2011

Фон : я работаю над страницей управления для музыкантов.Допустим, пользователь создает альбом, а затем загружает песню в альбом.Я использую сообщения ajax с плагином формы jQuery .

Сначала я работал над загрузкой песен в существующие альбомы (отлично работает).

Затем я работал над созданием новых альбомов и отображался без обновления, используя .append () и .attr (прекрасно работает).

Теперь я работаю над загрузкой песни вальбом, который появился благодаря append ().

Проблема : Когда созданный альбом готов, он великолепен.Все значения и функции в точности совпадают с альбомом, загруженным при визуализации страницы.

Когда я пытаюсь загрузить песню, я получаю сообщение об ошибке на стороне сервера.Он использует те же функции, которые я использую для загрузки песни в альбом ajaxed в качестве исходного альбома рендеринга страницы.

Я обновляю страницу и могу загрузить песню.

IЯ использую плагин jQuery.form, и я подумал, что это будет, потому что функция находится внутри $ (document) .ready (функция {...}

сценарий загрузки:

$('form#uploadSongToAlbum').submit(function() { 
  $(this).ajaxSubmit({
    target: 'login/uploadSongToAlbum.php',
    dataType:  'html',
    beforeSubmit: function() { 
      alert(showRequest);
      $.jGrowl("Uploading... hold on...<br />", { life:1000 });
    }, 
    success: function() {
      selectUploadedID(); 
    },
    error: function() {
      $.jGrowl(textStatus, {  header:"<span style='color:red'>Error:</span>", sticky: true });
    }
  });
  return false; 
});

Теперь, изучая проблему, я открыл консоль в Chrome, пошел в сеть и записал опубликованные запросы как для загрузки с ajaxed, так и для загрузки с загрузкой страницы, и обнаружил очень разные значения. Вот загрузка ajaxedзначения записей (это разрывы):

Данные формы :

файл: silence2.mp3

альбом: 80

и вот загруженные страницы значения постов (это работает):

Запрос полезной нагрузки :

------WebKitFormBoundaryZpJpGxBLJEBRYadH Расположение содержимого: данные формы; имя = "файл"; имя файла = "silence2.mp3" Тип содержимого: audio / mp3

------ WebKitFormBoundaryZpJpGxBLJEBRYadH Content-Disposition: form-data;name = "album" 80

------ WebKitFormBoundaryZpJpGxBLJEBRYadH -

Большое спасибо заранее всем, всем.Я должен делать что-то не так.Я могу предоставить больше кода, если это необходимо.Имейте в виду: html-разметка и значения как для ajaxed альбомов, так и для загруженных страниц альбомов действительны .Это должно быть что-то JQuery, что я делаю не так ...

1 Ответ

0 голосов
/ 16 августа 2011

Попробуйте добавить атрибут enctype в тег формы динамически создаваемого содержимого:

<form id="uploadSongToAlbum" action="login/uploadSongToAlbum.php" method="post" enctype="multipart/form-data">
    <!-- snip... -->
</form>

Кроме того, если ваш сценарий загрузки вызывается из $(document).ready, он будет вызываться только один раз, когдастраница загружается.Если вы хотите, чтобы он применялся к динамически создаваемым формам, используйте метод `live () ':

$('form#uploadSongToAlbum').live('submit', function() { 
    // ajaxSubmit code here....
});
...