背景:我正在为音乐家制作管理页面。假设用户创建专辑,然后将歌曲上传到专辑中。我正在使用带有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 上传后的值(这个中断):
表格数据:
文件:沉默2.mp3
专辑:80
这是页面加载的帖子值(这个有效):
请求有效载荷:
------WebKitFormBoundaryZpJpGxBLJEBRYadH Content-Disposition: form-data; 名称=“文件”;文件名="silence2.mp3" 内容类型:音频/mp3
------WebKitFormBoundaryZpJpGxBLJEBRYadH Content-Disposition: form-data; 名称="专辑" 80
------WebKitFormBoundaryZpJpGxBLJEBRYadH--
提前非常感谢大家。我一定做错了什么。如有必要,我可以提供更多代码。请记住:ajaxed 相册和页面加载相册的 html 标记和值都是有效的。我做错了一定是jQuery...