我有一个小的 AJAX 函数,它询问服务器是否应该选中特定的复选框。我想将信息传递给 AJAX 函数范围之外的变量。类似的东西:
isChecked = $.ajax({
type: "POST",
url: "/ajax/subscribe-query/",
data: "selfKey=" + commentData['selfKeyValue'],
success: function(isSubscribed){
if(isSubscribed == 'true'){
return = true;
}
else{
return = false;
}
}
})
或
var isChecked;
$.ajax({
type: "POST",
url: "/ajax/subscribe-query/",
data: "selfKey=" + commentData['selfKeyValue'],
success: function(isSubscribed){
if(isSubscribed == 'true'){
isChecked = true;
}
else{
isChecked = false;
}
}
})
当然,这些都不起作用。我该怎么做?
最佳答案
var isChecked;
$.ajax({
type: "POST",
url: "/ajax/subscribe-query/",
data: "selfKey=" + commentData['selfKeyValue'],
success: function(isSubscribed){
if(isSubscribed == 'true'){
isChecked = true;
}
else{
isChecked = false;
}
}
});
alert('isChecked');
在此代码中,即使在 ajax 成功函数中正确设置了“isChecked”属性,警报也会显示 undefined
,因为 ajax 调用是异步
。它会在 ajax 成功函数返回之前发出警报。因此,您需要像这样在 ajax 成功函数之后完成您的工作。您可以在 ajax 成功后传递变量来完成工作。
$.ajax({
type: "POST",
url: "/ajax/subscribe-query/",
data: "selfKey=" + commentData['selfKeyValue'],
success: function(isSubscribed){
chek(isChecked);//pass the variable here
}
});
function chek(isChecked){
if(isChecked){
$('#YourCheckbox').attr('checked','checked')
}
else{
$('#YourCheckbox').removeAttr('checked')
}
}
关于javascript - 将数据移出我的 jQuery AJAX 调用范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642708/