ajax 处理请求回来的数据
比如接口 /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 处理请求回来的数据的更多相关文章
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...
- ajax异步请求不能刷新数据的问题
搞了两三天的问题,今天解决了.总结下: function reportGrpChange(cuid, title){ document.getElementById('reportFrameDiv') ...
- JS Ajax异步请求发送列表数据后面多了[]
还在苦逼的写代码,这里就不详细了,直接抛出问题: 如图所示: 前端ajax请求向后端发送数据的时候,给key添加了[]出现很多找不到原因, 后面在说 解决方法: 暂时先这样记录一下,下次方便查找,好了 ...
- 关于ajax异步请求不到数据的问题 302跨域请求
项目大致问题是这样的 在线咨询模块的数据是通过ajax异步加载来请求到数据,然后动态解析并且显示 前台页面的请求代码 后台action: 另外就是这个项目还有一个登陆权限的认证,如果不登录后台或者登录 ...
- highcharts Ajax 动态请求加载数据
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- easy ui Tree请求跨域数据
扯淡篇: jQuery EasyUI为提供了大多数UI控件的使用,如:accordion,combobox,menu,dialog,tabs,validatebox,datagrid,window,t ...
- Vue--axios:vue中的ajax异步请求(发送和请求数据)、vue-resource异步请求和跨域
跨域原理: 一.使用axios发送get请求 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 & ...
- ajax请求获取的数据无法赋值给全局变量问题总结
一.总结: 1.问题描述: 今天做项目遇到在用表单显示详细信息的过程中ajax请求获取的数据无法赋值给全局变量的情况,从列表页面进入详情页,在详情页面被渲染了之后就会调用js文件里的接口向服务器请求数 ...
- jquery的ajax异步请求接收返回json数据
http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...
随机推荐
- ThoughtWorks 2017技术雷达
前言: ThoughtWorks人酷爱技术.我们对技术进行构建.研究. 测试.开源.记述,并始终致力于对其进行改进-以求造福 大众.我们的使命是支持卓越软件并掀起IT革命.我们创建 并分享Though ...
- jquery 自定义选择器
// HTML 代码 <body> <div id="divid1" class="divclass">白色</div> & ...
- 自学Python5.2-类、模块、包
类.模块.包 一.类 类的概念在许多语言中出现,很容易理解.它将数据和操作进行封装,以便将来的复用. 二.模块module 通常模块为一个文件,直接使用import来导入就好了.可以作为module ...
- Struts的使用
一.Struts2的获取 Struts的官方网站为:http://struts.apache.org/ 下载完Struts2的jar包,解压,Struts2资源包的目录结构如下图: apps目录下包含 ...
- 【java设计模式】【创建模式Creational Pattern】简单工厂模式Simple Factory Pattern(静态工厂方法模式Static Factory Method Pattern)
public class Test { public static void main(String[] args){ try{ Factory.factory("A").doSt ...
- [array] leetcode - 39. Combination Sum - Medium
leetcode - 39. Combination Sum - Medium descrition Given a set of candidate numbers (C) (without dup ...
- Func和Action委托简单用法
Func和Action类是特殊的类型,它们允许你在不必指定自定义委托类型的情况下,去使用委托.在整个.NET框架中都可以使用它们.例如,在我们考察并行计算时,你也会看到这两个类的示例. 上面一段文字是 ...
- 关于git的一些理论知识
一.什么是版本控制器 好多刚用git的coder一说起git,就随口会说出版本控制器嘛,我问那是干嘛的,大部分人就回答上传代码的.然后会用,但是有些理论你问他们他们就不知道了,比如不是代码的文件就不能 ...
- RSA,DES,RC4,3DES ,MD5
一,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥. RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需 ...
- [编织消息框架][JAVA核心技术]动态代理应用12-总结
动态代理这篇比较长,是框架组成的重要基础 回顾下学到的应用技术 1.异常应用 2.annotation技术 3.数值与逻辑分享 4.jdk.cglib.javassist等动态代理技术 5.懒处理.预 ...