ajax 处理请求回来的数据

小编 2026-06-11 阅读:1966 评论:0
比如接口 /test, 请求方式get, 请求过来的数据要处理在container 里,如下代码...

比如接口 /test, 请求方式get, 请求过来的数据要处理在container 里,如下代码

 

$.get("/test", {}, function(result){          $(".container").html('');          if(result.length>0) {            for(var i =0; i <result.length; i++) {              $(".container").append(                "<a >"+                  "<li>" +                    "<span  style='background-image:url(/sys-img/default.jpg)'></span>"+                    "<p > <span ></span>"+ "张全蛋" +"</p>"+                    "<p '>"+                      "<span >" + "2017-9-11 12:05:30" + "</span>"+                    "</p>"+                  "</li></a>"              )            }          } else {            $(".container").append(                "<h4 class='text-gray'>result里没有数据哦</h4>"            )          }        });

ps: 里面js 拼接的字符串可以用一个变量保存起来,然后统一追加到container 里面。在container里面可以做一个预处理,在里面可以放一个loading的图片,表示加载中。如 

 

var templateStr = ''<span>........</span>'';$(".container").append(templateStr)

这个时候,如果要给js拼接的字符串要绑定事件又该怎么处理呢? 要将事件绑定放在成功的回掉函数里,如下代码,

$.get("/test", {}, function(result){          $(".container").html('');          if(result.length>0) {            for(var i =0; i <result.length; i++) {              $(".container").append(                "<a class="a-link">"+                  "<li>" +                    "<span  style='background-image:url(/sys-img/default.jpg)'></span>"+                    "<p > <span ></span>"+ "张全蛋" +"</p>"+                    "<p '>"+                      "<span >" + "2017-9-11 12:05:30" + "</span>"+                    "</p>"+                  "</li></a>"              )            }            //放在回调成功后的函数做触发事件            $(".a-link").click(function(e){                var _thisid = $(this).id;                $.post("/test/one", {"www":xxx},     function(result){                   ....                })              })          } else {            $(".container").append(                "<h4 class='text-gray'>result里没有数据哦</h4>"            )          }        });                    

之前我做了这样的处理

$.get("/test", {}, function(result){          $(".container").html('');          if(result.length>0) {            for(var i =0; i <result.length; i++) {              $(".container").append(                "<a class='link'>"+                  "<li>" +                    "<span  style='background-image:url(/sys-img/default.jpg)'></span>"+                    "<p > <span ></span>"+ "张全蛋" +"</p>"+                    "<p '>"+                      "<span >" + "2017-9-11 12:05:30" + "</span>"+                    "</p>"+                  "</li></a>"              )            }                      } else {            $(".container").append(                "<h4 class='text-gray'>result里没有数据哦</h4>"            )          } });$(".link").click(function(e){    e.preventDefault();    e.stopPropagation();    var _thisid = $(this).id;    $.post("/msg/detail/view?msgid=" + _thisid, {}, function(result){   })})

 把绑定事件的函数放在ajax后面,无法触发点击事件。

有些同学会有疑惑,如果把绑定事件的函数放在请求ajax函数的后面,明明看到页面上已经加载好了相关的dom ,为什么就触发不了该dom的绑定事件呢?这里有两个知识点,第一个是ajax是异步加载, 程序执行到$(".link").click(function(e){....}) 会优先找 $('.link'),然后放在内存里,第二个是每次点击的时候就会去这块内存里去找这个 dom ,在ajax的请求的时候,还没有生成 $(''l.link),jq已经存下 $('.link') 的内存,并且是空的,因此,不论ajax有没有请求完毕,这里的 $('.link') 都是为空的,因此没办法绑定过事件。

除了这种在ajax 的回掉函数里,添加事件,也可以,在外面用jq 的代理来触发点击事件;

$('body').on('click','.selector', function(){...........})

这里可行的原因也是上面的分析,程序加载的时候,已经将$('body')存在内存里,这是有的,当触发的时候,就会找 .selector ,当然这时候是能找到的(页面已经渲染结束了)这是我的理解,如有错误欢迎来喷!

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表