我在 $(document).ready() 之前声明了几个变量。这些变量存在于回调函数中,如果时间被调用 x 量,但在第一个回调函数之后我遇到了一些问题变量变得未定义。
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 变量未定义,只有 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());
}
...
它奏效了。