1

私はJavascriptとjQueryの初心者であり、次のコードと結果に戸惑っています。

私のgolfer_nameがスコープに含まれているのに、team_idがスコープに含まれていないのはなぜですか?そして、どうすれば修正できますか?それは配列であるように見え、変数はコールバックで使用できない配列要素に等しく設定されます。

jQueryコード

function submit_pick( sender ) {
    var names = sender.attr('name').split('-');
    var team_id = names[0];
    var tournament_id = names[1];
    var pick_number = names[2];
    var golfer_id = sender.val();
    var golfer_name = sender.find("option:selected").text();
    var senders_parent = sender.parent().get(0);
    sender.remove();
    $(senders_parent).html('submitting pick...');
    jQuery("#testdiv").append("submit pick before ajax request: "+names+', '+team_id+', '+tournament_id+', '+pick_number+', '+golfer_id+', '+golfer_name+'<br />');
    jQuery.post(fantasy_golf.ajaxurl, 
                {'action' : 'insert_pick',
                 'team_id' : team_id,
                 'tournament_id' : tournament_id,
                 'pick_number' : pick_number,
                 'golfer_id' : golfer_id
                },
                function(response) {
                    if (response) {
                        jQuery("#testdiv").append("submit pick after response: "+names+', '+team_id+', '+tournament_id+', '+pick_number+', '+golfer_id+', '+golfer_name+'<br />');
                    }
                },
                'text'
     );
}

#testdivの結果

submit pick before ajax request: 10,2,1, 10, 2, 1, 22, Aaron Baddeley
submit pick after response: undefined, undefined, undefined, undefined, 22, Aaron Baddeley
4

1 に答える 1

0

コメント化されたコード行(元々コメントアウトされていなかった)が、問題のあるコード行であると思っていたものの後にあるにもかかわらず、上記のエラーを引き起こしたのは興味深いことです。

質問の前に余分なコード行がすべてコメントアウトされていなかったことをお詫びします。コードを移動している最中で、新しいコードを下に表示する必要がありました。上記の問題が発生することは考えられませんでした。その点。

助けてくれたすべての人に感謝します。

function submit_pick( sender ) {
    var names = sender.attr('name').split('-');
    jQuery("#testdiv").append(sender.attr('name')+"<br />");
    var team_id = names[0];
    var tournament_id = names[1];
    var pick_number = names[2];
    var golfer_id = sender.val();
    var golfer_name = sender.find("option:selected").text();
    var senders_parent = sender.parent().get(0);
    sender.remove();
    $(senders_parent).html('submitting pick...');
    jQuery("#testdiv").append("submit pick before ajax request: "+names+', '+team_id+', '+tournament_id+', '+pick_number+', '+golfer_id+', '+golfer_name+'<br />');
    jQuery.post(fantasy_golf.ajaxurl, 
                {'action' : 'insert_pick',
                 'team_id' : team_id,
                 'tournament_id' : tournament_id, 
                 'pick_number' : pick_number,
                 'golfer_id' : golfer_id 
                },
                function(response) {
                    if (response) {
                        jQuery("#testdiv").append("submit pick after response: "+names+', '+team_id+', '+tournament_id+', '+pick_number+', '+golfer_id+', '+golfer_name+'<br />');
//                            var names = $this.attr('id').split('-');
//                            var pick_id = names[1];
//                            var team_id = names[2];
//                            var tournament_id = names[3];
//                            var pick_number = names[4];
                    }
                },
                'text'
    );
}    
于 2012-04-29T18:30:38.057 に答える