使用jQuery表单插件发布未正确提交的数据

时间:2011-08-16 05:10:48

标签: jquery jquery-plugins post uploading jquery-forms-plugin

背景:我正在为音乐家制作管理页面。让我们说用户创建一个专辑,然后将一首歌上传到专辑中。我正在使用带有 jQuery表单插件的ajax帖子。

首先,我致力于将歌曲上传到现有专辑中(效果很好)。

然后,我致力于使用.append()和.attr(非常棒)创建新专辑并在没有刷新的情况下显示。

现在我正在努力将一首歌上传到专辑中,这要归功于append()。

问题:当准备好创建的专辑时,它很棒。所有值和功能与页面呈现时加载的相册完全相同。

当我尝试上传歌曲时,我收到服务器端错误。它使用与我用来将歌曲上传到ajaxed相册的完全相同的功能作为初始页面渲染专辑。

我刷新页面,我可以上传一首歌。

我正在使用jQuery.form插件,我认为这是因为该函数位于$(document).ready(function {...}

上传脚本:

$('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      内容处理:表格数据; NAME = “文件”;文件名= “silence2.mp3”      内容类型:audio / mp3

     

------ WebKitFormBoundaryZpJpGxBLJEBRYadH      内容处理:表格数据; NAME = “专辑”      80

     

------ WebKitFormBoundaryZpJpGxBLJEBRYadH -

先谢谢大家,大家。我一定做错了什么。如有必要,我可以提供更多代码。请记住:ajaxed相册和页面加载相册的html标记和值有效。它一定是jQuery,我做错了......

1 个答案:

答案 0 :(得分:0)

尝试将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....
});