文档章节

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

淡水鱼
 淡水鱼
发布于 2013/02/03 18:09
字数 389
阅读 2186
收藏 6

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

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

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函数获取的动态变量

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请求是否完成都要向下执行。同步请求要临时锁定浏览器,当请求正在执行时不执行任何动作。

© 著作权归作者所有

淡水鱼

淡水鱼

粉丝 12
博文 12
码字总数 5378
作品 0
广州
产品经理
私信 提问
Java程序员从笨鸟到菜鸟之(八十九)跟我学jquery(五)jquery中的ajax详解

Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个开发人员的而有所差异.jQuery提供了一系列Ajax函数来帮助我们统...

长平狐
2012/11/12
346
0
Jquery中AJAX参数详细介绍

在使用jquery的时候,我们经常用到jquery中对ajax的封装,下面对ajax函数的各参数详细说明和讲解,以便更好的理解和使用 $.get(url, data, callback,type) 和 $.post(url, data, callback, ...

凯文加内特
2015/01/28
389
0
JavaScript 框架学习(JQuery)

参考: http://www.w3cschool.cc/jquery/jquery-tutorial.html 参考: http://tool.oschina.net/apidocs/apidoc?api=jquery // 注意:在JS代码中,为保证 JS代码能够正常运行,需要在HTML代码...

明天以后
2014/10/01
253
0
jQuery零基础入门——(八)AJAX

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 用JavaScript写AJAX前面已经介绍...

JandenMa
2018/08/06
29
0
jQuery AJAX 函数详解与实例应用

什么是 AJAX? AJAX = Asynchronous JavaScript and XML. AJAX 是一种创建快速动态网页的技术。 AJAX 通过在后台与服务器交换少量数据的方式,允许网页进行异步更新。这意味着有可能在不重载...

Adam-Lee
2011/06/30
4.1K
1

没有更多内容

加载失败,请刷新页面

加载更多

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
3分钟前
2
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
6分钟前
2
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
28分钟前
1
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
28分钟前
1
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部