背景:私はミュージシャンの管理ページに取り組んでいます。ユーザーがアルバムを作成してから、アルバムに曲をアップロードするとします。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アップロードとページ読み込みアップロードの両方の投稿されたリクエストを記録しました。非常に異なる値を発見しました。アップロードされた投稿の値は次のとおりです(これは壊れています)。
フォームデータ:
file:silence2.mp3
アルバム:80
ページに読み込まれた投稿の値は次のとおりです(これは機能します)。
ペイロードのリクエスト:
------ WebKitFormBoundaryZpJpGxBLJEBRYadH Content-Disposition:form-data; name="ファイル"; filename = "silence2.mp3"コンテンツタイプ:audio / mp3
------ WebKitFormBoundaryZpJpGxBLJEBRYadH Content-Disposition:form-data; name = "album" 80
------ WebKitFormBoundaryZpJpGxBLJEBRYadH--
みなさん、どうもありがとうございました。私は何か間違ったことをしているに違いない。必要に応じて、さらにコードを提供できます。注意:ajaxedアルバムとページロードアルバムの両方のhtmlマークアップと値は有効です。私が間違っているのはjQueryであるに違いありません...