ajax 处理请求回来的数据

简介: 比如接口 /test, 请求方式get, 请求过来的数据要处理在container 里,如下代码 $.get("/test", {}, function(result){ $(".

比如接口 /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 ,当然这时候是能找到的(页面已经渲染结束了)这是我的理解,如有错误欢迎来喷!

目录
相关文章
|
16天前
|
XML 前端开发 JavaScript
|
1月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
57 22
|
1月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
37 18
|
1月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
60 4
|
1月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
93 1
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
55 10
React技术栈-react使用的Ajax请求库实战案例
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
33 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
2月前
|
JSON JavaScript 前端开发
Jquery常用操作汇总,dom操作,ajax请求
本文汇总了jQuery的一些常用操作,包括DOM元素的选择、添加、移除,表单操作,以及如何使用jQuery发送Ajax请求,涵盖了GET、POST请求和文件上传等常见场景。
|
2月前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
42 4
|
1月前
|
Web App开发 前端开发 JavaScript
Python编程—Ajax数据爬取(一)
Python编程—Ajax数据爬取(一)