$(document).ready() の前に宣言する変数がいくつかあります。これらの変数は、x amount if times と呼ばれるコールバック関数に存在しますが、最初のコールバック関数のいくつかの後に問題が発生しています。変数が未定義になります。
var file_count = 0;
var permission_state = [ [] ];
var rate_info = [ [] ];
var is_rated = [];
$(document).ready(function(){
...
onComplete: function(id, fileName, responseJSON) {
if($("input[name=voteit"+id+"]").prop("checked")){
is_rated.push(1);
rate_info[id].push($("#title-textarea"+id).val());
rate_info[id].push($("select[name=category"+id+"]").val());
rate_info[id].push($("select[name=subcategory"+id+"]").val());
} else {
is_rated.push(0);
permission_state[id].push($(".permission-level"+id).val());
permission_state[id].push($("#title-textarea"+id).val());
}
...
そしてコンソールは私に与えます:
「'onValidate' コールバックで例外をキャッチしました - TypeError: permission_state[id] は未定義です」
この場合の id は、コールバック関数の反復ごとにインクリメントされる整数であり、正しく機能していることを確認しました。また、コンソールが is_rated 変数を undefined にすることについて何も言わず、rate_info または permission_state だけを表示するのはなぜですか?
編集:私がしたアドバイスに感謝します:
onComplete: function(id, fileName, responseJSON) {
if($("input[name=voteit"+id+"]").prop("checked")){
rate_info[id] = [];
is_rated.push(1);
rate_info[id].push($("#title-textarea"+id).val());
rate_info[id].push($("select[name=category"+id+"]").val());
rate_info[id].push($("select[name=subcategory"+id+"]").val());
} else {
permission_state[id] = [];
is_rated.push(0);
permission_state[id].push($(".permission-level"+id).val());
permission_state[id].push($("#title-textarea"+id).val());
}
...
そしてそれはうまくいきました。