1.尽量优先采用ajax获取html文件,然后再操作dom把数据填充到里面

在实际项目中,如果前端开发人员没有把页面给切分开,那么有如下两种办法可供选择:其一是,在各种点击事件中,用js去拼接并在拼接的时候把数据填充到里面。代码如下:

$('#myPublishs').unbind().bind('click',function(){
$.ajax({
url : initPublishUrl,
dataType: "json",
type:'post',
xhrFields: {
withCredentials: true
},
data:JSON.stringify({'page':1,'pageSize':5}),
contentType: 'application/json; charset=utf-8',
success : function(res) {
if(res.code == 200 && res.data){
var htmlStr = "";
var result = res.data.data;
if(result && result.length != 0){
htmlStr = "<ul class='artile-wap MyCollection-content' style='min-height:auto'>" + "<span class='rfuse-circular2'></span>";
for(var i = 0; i < result.length; i++){
var row = result[i];
var time = row.updateTime;
time = kk_main.subTime(time);
htmlStr += "<li class='artile-item clearfix' articleid=" + row.id +">" +
"<div class='margin'>" +
"<span class='time-pub'>" + row.updateTime + "</span>" +
"<div class=\"item-border item2 col-sm-12 clearfix\">" ;
if(row.cover){
htmlStr +="<div class=\"col-sm-4 col-md-4 item-img myCollectionPic\">" +
"<img src=\""+row.cover+"\" class=\"img-responsive\" alt=\"\" />" +
"</div>"+
"<div class=\"col-sm-8 col-md-8 item-body\">";
}else{
htmlStr += "<div class=\"col-sm-12 col-md-12 item-body\">" ;
} htmlStr +='<h3><a href="/v/'+row.id+'">' + row.realTitle + "</a></h3>" +
'<p><a href="/v/'+row.id+'">' + row.summary + "</a></p>" +
"<ul class=\"list-unstyled list-inline inline-black-span\">" ;
if(row.tags){
htmlStr += '<li><span class=\"glyphicon glyphicon-tag\" aria-hidden=\"true\"></span>';
for(var j=0; j< row.tags.length; j++){
if(j < 3){ //最多取3个标签
htmlStr += "<a href=\"/t/"+row.tagIds[j]+"\">" +
"<span class=\"\">"+ row.tags[j]+"</span></a>," ;
}else{
break;
}
}
htmlStr = htmlStr.substring(0,htmlStr.length-1); //去掉最后一个','
}
htmlStr += "</li><li class=\"blue\"><span class=\"glyphicon glyphicon-eye-open\" aria-hidden=\"true\"></span><span>"+ row.viewCnt + "</span></li>" +
"<li><span class=\"glyphicon glyphicon-comment\" aria-hidden=\"true\" style=\"color:#ddd;\"></span><span>"+ row.commentCnt +"</span></li>" +
"</ul>" +
"</div>" +
"</div>" +
"</div>" +
"</li>";
} htmlStr += "</ul>" +
"<div class=\"text-center col-sm-12 color-f\">" +
"<div class=\"load-btn\">" +
"<a id=\"morePubs\" href=\"#\" class=\"btn btn-load\">加载更多</a>" +
"</div>" +
"</div>"; }else{
htmlStr = emptyHtml();
}
$('#content').append(htmlStr);
//事件绑定
publicBind();
}else if(res.flag && res.flag == 0){
window.location.href = '/a/Login.html';
} },
error: function (res) {}
});
});

这种方法优点是,方便将后台获取的数据填充到html字符串中。缺点也很明显,各种字符串拼接和js代码都混合在一起。

其二代码如下:

$('#myPublishs').unbind().bind('click',function(){
$.ajax({
url : initPublishUrl,
dataType: "json",
type:'post',
xhrFields: {
withCredentials: true
},
data:JSON.stringify({'page':1,'pageSize':5}),
contentType: 'application/json; charset=utf-8',
success : function(res) {
if(res.code == 200 && res.data){
$('#myPublishs').unbind().bind('click',function(){
$("#content").load("example.html");
//操作dom进行数据填充
});
}
},
error: function (res) {}
});
});
});

该方法的优点是,不需要繁琐的进行html字符串的拼接,主要关注数据的填充就可以。

2.$.ajaxSetup设置全局 AJAX 默认选项。

把共有的ajax设置抽取出来,这样就不用每次写ajax时都要配置共有的选项了

// 设置AJAX请求时某些参数的的默认值
$.ajaxSetup({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
//设置AJAX请求时,带上cookie
xhrFields : {
withCredentials : true
}
});

很方便有木有…

3.$.ajaxSuccess(callback)请求成功时执行函数。

 // 全局定义AJAX完成后需要做的操作,检测是否登录
$("document").ajaxSuccess(function(evt, request, settings){
$(this).append("<li>请求成功!</li>");
});

一般常用在校验用户是否登录,给予相应的提示信息。

巧用ajax事件可以避免在每一个ajax请求中书写同样的代码,降低代码的冗余度。

4.ajax跨域请求

说明:没有进行跨域请求时,在进行请求时,浏览器会默认带上cookie数据,而跨域请求时,浏览器不会带上cookie需要手动加上如下代码

// 设置AJAX请求时某些参数的的默认值
$.ajaxSetup({
//设置AJAX跨域请求时,手动带上cookie
xhrFields : {
withCredentials : true
}
});

ajax的一些实用技巧的更多相关文章

  1. Notepad++ 实用技巧

    Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ...

  2. javascript实用技巧、javascript高级技巧

    字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ...

  3. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  4. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示

    iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端.  打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面.   ...

  5. iOS开发实用技巧—项目新特性页面的处理

    iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性 ...

  6. IOS 网络浅析-(十三 SDWebImage 实用技巧)

    IOS 网络浅析-(十三 SDWebImage 实用技巧) 首先让我描述一下为了什么而产生的实用技巧.(在TableView.CollectionView中)当用户所处环境WiFi网速不够快(不能立即 ...

  7. NSString的八条实用技巧

    NSString的八条实用技巧 有一篇文章写了:iOS开发之NSString的几条实用技巧 , 今天这篇,我们讲讲NSString的八条实用技巧.大家可以收藏起来,方便开发随时可以复制粘贴. 0.首字 ...

  8. ###《VIM实用技巧》

    ###<VIM实用技巧> #@author: gr #@date: 2015-11-20 #@email: forgerui@gmail.com <VIM实用技巧>阅读笔记. ...

  9. PowerDesigner实用技巧小结(3)

    PowerDesigner实用技巧小结(3) PowerDesigner 技巧小结 sqlserver数据库databasevbscriptsqldomain 1.PowerDesigner 使用 M ...

随机推荐

  1. sqlserver 导出数据库表结构

    https://www.cnblogs.com/miaomiaoquanfa/p/6909835.html SELECT 表名 = case when a.colorder=1 then d.name ...

  2. Kibana6.3.1安装

    Kibana安装 Kibana官方下载地址: https://www.elastic.co/cn/downloads/kibana 也可以直接使用以下命令下载(文章下载目录一概为/home/tools ...

  3. master.HMaster: Failed to become active master

    Hbase集群启动后自动退出,日志错误: fatal error: master.HMaster: Failed to become active master java.io.IOException ...

  4. Artistic Style 3.1

    Artistic Style 3.1 Tab 选项 下面的示例显示空白字符.一个空格(space)用一个 . 表示,一个制表符(tab)用 > (大于号) 表示. ** 默认缩进 ** 如果没有 ...

  5. 选择排序,C语言实现

    选择排序是不稳定排序,时间复杂度为O(n^2). 选择排序类似插入排序,把数组分为两部分,一部分已经排好序,一部分未排序. 刚开始的时候所有的元素都未排序,已排序的部分为空.就好像你手里有十张牌,左手 ...

  6. xmind打开文件报错

    可以尝试使用导入 文件——导入 选择此方式打开即可.

  7. 20145202马超《网络对抗》Exp6 信息搜集与漏洞扫描

    本实践的目标是掌握信息搜集的最基础技能.具体有(1)各种搜索技巧的应用(2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点(4)漏洞扫描:会扫 ...

  8. 20145226夏艺华 逆向及Bof基础实践

    逆向及Bof基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串,如图所示: 该程序同时 ...

  9. C#中Mutex的用法

    C#中Mutex是互斥锁,位于System.Threading 命名空间中. 顾名思义,它是一个互斥的对象,同一时间只有一个线程可以拥有它,该类还可用于进程间同步的同步基元. 如果当前有一个线程拥有它 ...

  10. javascript常用对象方法

    concat:连接产生一个新数组 [1,2].concat([3,4])     >> [1, 2, 3, 4] filter:返回符合条件的一个新数组 [1,2,3,4,5].filte ...