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

ajax 处理请求回来的数据的更多相关文章

  1. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  2. ajax异步请求不能刷新数据的问题

    搞了两三天的问题,今天解决了.总结下: function reportGrpChange(cuid, title){ document.getElementById('reportFrameDiv') ...

  3. JS Ajax异步请求发送列表数据后面多了[]

    还在苦逼的写代码,这里就不详细了,直接抛出问题: 如图所示: 前端ajax请求向后端发送数据的时候,给key添加了[]出现很多找不到原因, 后面在说 解决方法: 暂时先这样记录一下,下次方便查找,好了 ...

  4. 关于ajax异步请求不到数据的问题 302跨域请求

    项目大致问题是这样的 在线咨询模块的数据是通过ajax异步加载来请求到数据,然后动态解析并且显示 前台页面的请求代码 后台action: 另外就是这个项目还有一个登陆权限的认证,如果不登录后台或者登录 ...

  5. highcharts Ajax 动态请求加载数据

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  6. easy ui Tree请求跨域数据

    扯淡篇: jQuery EasyUI为提供了大多数UI控件的使用,如:accordion,combobox,menu,dialog,tabs,validatebox,datagrid,window,t ...

  7. Vue--axios:vue中的ajax异步请求(发送和请求数据)、vue-resource异步请求和跨域

    跨域原理: 一.使用axios发送get请求 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 & ...

  8. ajax请求获取的数据无法赋值给全局变量问题总结

    一.总结: 1.问题描述: 今天做项目遇到在用表单显示详细信息的过程中ajax请求获取的数据无法赋值给全局变量的情况,从列表页面进入详情页,在详情页面被渲染了之后就会调用js文件里的接口向服务器请求数 ...

  9. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

随机推荐

  1. JavaScript 实现命名空间(namespace)的最佳方案——兼容主流的定义类(class)的方法,兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 一.缘由 在很多的面向对象编程语言中,我们可以使用命名空间(namespace)来组织代码,避免全局变量污染.命名冲突.遗憾的是,JavaScript中并不提供对命名空间的原生支 ...

  2. M03 利用Accord 进行机器学习的第一个小例子

    01 安装 Visual studio 2017. 不具备安装这个的话,也可安装,Microsoft Visual Studio Express (or equivalent) 02 创建 C# 的 ...

  3. 自学Python3.1-函数基础

    一.函数概述 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括 ...

  4. es6+require混合开发,兼容es6 module,import,export之 加载css及公用date-main

    大家好!上篇文章已经介绍了搭建文件夹,以及加载js文件.现在讲一下加载css ,以及对baseUrl的理解 1.对项目结构的认知 一个项目的结构是根据项目的架构来决定的,当然也可以做到更智能,但是意义 ...

  5. Java对象转换成xml对象和Java对象转换成JSON对象

    1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...

  6. springboot(十三):springboot小技巧

    一些springboot小技巧.小知识点 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JDBC.两种方式各有区别下面 ...

  7. 串String(2):串的实现(堆分配存储表示法)

    7/27/2017,先占个位,最近事情比较忙,明天敲一波代码,预测在一星期内搞定 9/02/2017,看到这个十分汗颜,八月去美帝学习了,没有抽空补上这一博文,计划这个月开了数据结构课后补上

  8. iOS 轻松实现自定义TabBar

    自定义TabBar的案例网上不少,昨天受到开发小伙伴的影响,尝试了一下非大神的取巧思路:Demo 1.创建RootViewController,后面创建几个继承的VC,将这几个VC添加到TabBarC ...

  9. 78、excel的读写操作

    本篇主要是用python来自动生成excel数据文件也就是简单的excel读写操作.python读写excel文件主要是第三方模块库xlrd.xlwt. 本篇导航: 写excel 读excel 一.写 ...

  10. rm 命令详解

    rm  作用: 删除一个目录中的一个或多个文件或目录,也可以将某个目录及下属的所有文件及子目录均删除掉, 对于连接文件只是删除整个连接文件,而保持原有文件. 注意: 使用rm 命令要格外小心,因为一旦 ...