经过async参数获取jQuery中Ajax函数的返回值

先描述一下这个函数使用的环境, 网站后台作一个在线访客列表功能,列出每个用户实时访问的信息(包含当前访问的商品,类目,所在的控制器 url .... ) 扯远了, 这个跟jquery这个不要紧 jquery

为了节省服务器资源, 商品信息采起异步获取, 服务器中只记录了访客访问的商品ID. 后台列表页中的jquery获取商品函数以下: ajax

function getGoodsInfo(goods_id){
        var goods_info = "";
        if(goods_id == ""){
            return false;
        }
        var rule = /^\d+$/i;
        var url = "/Admin/Goods/ajaxInfo";
        if (rule.test(goods_id)) {
            $.ajax({
                type:"GET",
                dataType:"json",
                cache:true,
                url:url,
                data:"gid=" + goods_id,
                success:function (data) {
                    if (data.status == true) {
                        goods_info = "<dl>" +
                                "       <dt><a href=\"" + data.data.url + "\" target=\"_blank\"><img src=\"" + data.data.gallery + "\"></a> </dt>......</dl>";
                    } else {
                        return false;
                    }
                }
            });
        }
        return goods_info;
    }

这段代码没法返回ajax函数获取的动态变量 json

goods_info 一直是空的. 浏览器


改进了一下,经过下了个全局变量,将async(默认为true)异步改为同步,就顺利获得了ajax的返回值。代码以下: 服务器


function getGoodsInfo(goods_id){
        var goods_info = "";
        if(goods_id == ""){
            return false;
        }
        var rule = /^\d+$/i;
        var url = "/Admin/Goods/ajaxInfo";
        if (rule.test(goods_id)) {
            $.ajax({
                type:"GET",
                dataType:"json",
                cache:true,
                async: false,
                url:url,
                data:"gid=" + goods_id,
                success:function (data) {
                    if (data.status == true) {
                        goods_info = "<dl>" +
                                "       <dt><a href=\"" + data.data.url + "\" target=\"_blank\"><img src=\"" + data.data.gallery + "\"></a> </dt>" +
                                "  ..... ...</dl>";


                    } else {
                        return false;
                    }
                }
            });
        }
        return goods_info;
    }



async是asynchronous[异步]的缩写,它是一个bool值默认为true。当async为true时,先无论ajax请求是否完成都要向下执行。同步请求要临时锁定浏览器,当请求正在执行时不执行任何动做。 异步

相关文章
相关标签/搜索