ie 8以下不支持全局变量,我在$.ajax success里面改了局部变量,如何在函数外面接收里面的值啊?有

发布于 2022-09-04 03:06:54 字数 608 浏览 15 评论 0

function searchCount(type) {

    searchCountUrl = domain + "rest/member/searchCount.do";

    $.ajax({
        url: searchCountUrl,
        method: 'get',
        async: false,
        data: {
            key: "mooc",
            keyword: skeyword,
            type: type
        },
        success: function (data) {
            var activityCount = data.data.activityCount; 
            $("#activityCount").text(activityCount);
        }
        
    })
}
alert(activityCount); //我想接收sucesss 里面的值。
但我写了局部变量。请问有什么办法? 因为ie8以下 经常报错,不支持全局变量,只要改为局部变量就好,
但关键我这里怎么接收内部函数里$.ajax success里的值啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

油焖大侠 2022-09-11 03:07:12

任何浏览器都支持全局变量的!!
你的代码错了啊

var activityCount = data.data.activityCount; 

你用var在那个回调函数中重申明了一个同名变量啊,不是修改,大兄弟,咱认真点。

其次,AJAX是异步的,你这alert及其有可能在ajax还未执行完毕就执行了。

反差帅 2022-09-11 03:07:10

首先我觉得IE8应该是支持全局变量的,其次ajax是异步,你在后面alert,是弹不出来ajax的结果的!弹出的只是开始声明是的值!ajax成功后,把要做的事情都丢在成功的回调中即可!

哆兒滾 2022-09-11 03:06:56

首先你已经设置了async: false,那么这段请求就是同步阻塞的,直接在后面取就可以了。

function searchCount(type) {
    var searchCountUrl = domain + "rest/member/searchCount.do";
    var aj = $.ajax({
        url: searchCountUrl,
        method: 'get',
        async: false,
        data: {
            key: "mooc",
            keyword: skeyword,
            type: type
        },
    });
    return aj.responseText;
}

alert(searchCount(type));

如果设置async: true,那就需要以回调的形式获取结果。

function searchCount(type,callback) {

    var searchCountUrl = domain + "rest/member/searchCount.do";

    $.ajax({
        url: searchCountUrl,
        method: 'get',
        async: true,
        data: {
            key: "mooc",
            keyword: skeyword,
            type: type
        },
        success: function (data) {
            var activityCount = data.data.activityCount; 
            callback(activityCount);
        }
        
    })
}

searchCount(type,function(activityCount){
    alert(activityCount);
});

或者用新特性的Promise来封装

function searchCount(type) {
    return new Promise(function(resolve){
        var searchCountUrl = domain + "rest/member/searchCount.do";

        $.ajax({
            url: searchCountUrl,
            method: 'get',
            async: true,
            data: {
                key: "mooc",
                keyword: skeyword,
                type: type
            },
            success: function (data) {
                var activityCount = data.data.activityCount; 
                resolve(activityCount);
            }
            
        });
    });
}

//ES6
searchCount(type)
    .then(function(activityCount){
        alert(activityCount);
    });

//ES2017
alert(await searchCount(type));
眼泪都笑了 2022-09-11 03:06:56

你接收到了值要干什么?data.data是你的json?如果说为了显示,就你现在这样就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文