2012-04-29 89 views
0

我是Javascript和jQuery的新手,並且對以下代碼和結果感到困惑。jquery ajax回調變量範圍(爲什麼有一些在範圍內而其他人不是)

爲什麼我的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 
+1

您確定,您沒有原始代碼中的拼寫錯誤嗎?代碼對我來說似乎沒問題。 – JoshuaBoshi

+0

'response'的內容是什麼? – Chopin

+0

原始代碼在'jQuery(「#testdiv」)。append(「submit pick after response ...')後包含額外的行,當我在上面的作品中發佈我的代碼時, –

回答

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' 
    ); 
}