我有一个小的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;
}
}
})
当然,这些都不是。我该怎么做?
答案 0 :(得分:2)
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调用是Asynchronous
。它将在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')
}
}
答案 1 :(得分:0)
我建议创建一个具有isChecked属性的对象。这比使用简单的全局变量更安全。例如:
var inputObj = {};
$.ajax({
type: "POST",
url: "/ajax/subscribe-query/",
data: "selfKey=" + commentData['selfKeyValue'],
success: function(isSubscribed){
if(isSubscribed == 'true'){
inputObj.isChecked = true;
}
else{
inputObj.isChecked = false;
}
}
})