javascript - 将数据移出我的 jQuery AJAX 调用范围

标签 javascript jquery

我有一个小的 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/

相关文章:

javascript - 在查看页面之前预加载并运行 jQuery/javascript

javascript - 将对象数组添加到现有对象

javascript - 使用 replace() 添加中断

javascript - 在 jquery 中检查复选框

javascript - Jquery 验证 - 输入掩码冲突

javascript - 存储和恢复事件处理程序

javascript - 不清楚为什么在尝试将 JSON 功能添加到数组时会得到奇怪的结果

javascript - 第二个下拉列表取决于我的第一个下拉列表。如何?

jquery - 将样式应用于 CSS 中的列表

javascript - 如何在Three.js中使3d模型的边框平滑