Javascript jquery ajax回调变量作用域(为什么一些在作用域中,而另一些不在作用域中)
我是Javascript和jQuery的新手,对以下代码和结果感到困惑 为什么我的高尔夫球手的名字在范围内,而我的球队id不在范围内?我该如何修复它? 它似乎是数组,变量集等于回调中不可用的数组元素 jQuery代码Javascript jquery ajax回调变量作用域(为什么一些在作用域中,而另一些不在作用域中),javascript,jquery,scope,jquery-callback,Javascript,Jquery,Scope,Jquery Callback,我是Javascript和jQuery的新手,对以下代码和结果感到困惑 为什么我的高尔夫球手的名字在范围内,而我的球队id不在范围内?我该如何修复它? 它似乎是数组,变量集等于回调中不可用的数组元素 jQuery代码 function submit_pick( sender ) { var names = sender.attr('name').split('-'); var team_id = names[0]; var tournament_id = names[1]
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'
);
}
我发现有趣的是,注释掉的代码行(最初未注释掉的代码行)导致了上述错误,即使它们是在我认为有问题的代码行之后 很抱歉,在我提问之前没有注释掉所有额外的代码行,我正在移动一些新的代码,我仍然需要查看下面的代码,我只是从来没有想到它会导致超过这一点的问题 谢谢所有帮忙的人
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'
);
}
您确定原始代码中没有输入错误吗?代码在我看来还可以。响应的内容是什么?原始代码在jQuerytestdiv.appendsubmit pick after响应后包含额外的行。。。一旦我把这些行注释掉,我的代码就如上面贴的那样有效了。
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'
);
}