比如接口 /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. kafka入门样例 for java

    1,生产者 import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.Key ...

  2. 在无人值守程序(服务)中调用Microsoft Graph

    作者:陈希章 发表于 2017年5月31日 什么是无人值守程序(服务) 我在此前用了几篇文章分别介绍了在桌面应用程序(控制台),Web应用程序(ASP.NET MVC),以及PowerSehll脚本中 ...

  3. Elasticsearch和MongoDB分片及高可用对比

    本文旨在对比Elasticsearch和MongoDB高可用和分片的实现机制. Elasticsearch ES天生就是分布式的,那她又是如何做到天生分布式的? 通过ES官方指南我们可以知道: 一个运 ...

  4. python 素因子分解

    在使用python解决问题之前,我们先说一下,什么是素因子分解 所谓素因子分解就是,先找这个数的所有约数(约数即:a%b == 0,也就是a可以被b整除) 例如:20的约数集合为 [1, 2, 5, ...

  5. 如何正确使用javah

    bogon:src zexu$ javah -jni -classpath /Users/zexu/github/ijkplayer/android/ijkplayer/ijkplayer-java/ ...

  6. 【java提高】---ArrayList源码

    ArrayList源码 一.定义 public class ArrayList<E> extends AbstractList<E> implements List<E& ...

  7. 【java】HashSet

    package com.tn.hashSet; public class Person { private int id; private String name; private String bi ...

  8. 面试题汇总--数据储存/应用程序/UI控件/客户端的安全性与框架处理。。。

    一 数据储存  1.如果后期需要增加数据库中的字段怎么实现,如果不使用 CoreData 呢?编写 SQL 语句来操作原来表中的字段1)增加表字段ALTER TABLE 表名 ADD COLUMN 字 ...

  9. template package (godoc 翻译)

    template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出. 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护H ...

  10. input上传图片(file),预览图片的两种方法。blob与base64编码

    上传图片时一般都需要预览,我一般用这两种方法来实现.base64编码可以直接上传到后台,后台解析下,得到的文件就会比较小了,省去了压缩图片这一步了. //获取对象input file 的图片地址,放进 ...