Я новичок в Javascript и jQuery и озадачен следующим кодом и результатами.jquery ajax callback variable scope (почему некоторые в области видимости и другие нет)
Почему мое имя golfer_ в сфере видимости, но мой 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
Уверены, у вас нет опечатки в исходном коде? Код мне подходит. – JoshuaBoshi
Что такое «ответ»? – Chopin
Исходный код содержал дополнительные строки после 'jQuery (« # testdiv »). Append (« submit pick after response ... », как только я прокомментировал эти строки, мой код, как указано выше, работает. –