0

$(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());
        }
    ...

そしてそれはうまくいきました。

4

0 に答える 0