ajax的一些实用技巧
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的一些实用技巧的更多相关文章
- Notepad++ 实用技巧
		Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ... 
- javascript实用技巧、javascript高级技巧
		字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ... 
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
		iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ... 
- iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示
		iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端. 打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面. ... 
- iOS开发实用技巧—项目新特性页面的处理
		iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性 ... 
- IOS 网络浅析-(十三 SDWebImage 实用技巧)
		IOS 网络浅析-(十三 SDWebImage 实用技巧) 首先让我描述一下为了什么而产生的实用技巧.(在TableView.CollectionView中)当用户所处环境WiFi网速不够快(不能立即 ... 
- NSString的八条实用技巧
		NSString的八条实用技巧 有一篇文章写了:iOS开发之NSString的几条实用技巧 , 今天这篇,我们讲讲NSString的八条实用技巧.大家可以收藏起来,方便开发随时可以复制粘贴. 0.首字 ... 
- ###《VIM实用技巧》
		###<VIM实用技巧> #@author: gr #@date: 2015-11-20 #@email: forgerui@gmail.com <VIM实用技巧>阅读笔记. ... 
- PowerDesigner实用技巧小结(3)
		PowerDesigner实用技巧小结(3) PowerDesigner 技巧小结 sqlserver数据库databasevbscriptsqldomain 1.PowerDesigner 使用 M ... 
随机推荐
- centos总结linux下svn安装与使用
			一.安装篇 centos下yum安装 yum install subversion 查看安装是否成功: svnserve --version 查看安装内容与位置 rpm -ql subversion ... 
- Elasticsearch 映射操作
			一.创建 语法: PUT /索引库名称/_mapping/类型名称 { "properties": { "字段名": { "type": 类 ... 
- Mac进度条卡在100%
- rtsp over tcp并设置多个options
			版权声明:本文为博主原创文章,未经博主允许不得转载. var vlc=document.getElementById("vlc"); var options = new Array ... 
- 【EXCEL】XMLファイルを開く方法(XML文件打开方法)
			前言 XMLとは:Extensible Markup Language(エクステンシブル マークアップ ランゲージ)は.基本的な構文規則を共通とすることで.任意の用途向けの言語に拡張することを容易とし ... 
- nodejs multer
			nodejs上传文件multer var multer = require('multer') var storage = multer.diskStorage({ destination: func ... 
- 【BZOJ3991】寻宝游戏(动态规划)
			[BZOJ3991]寻宝游戏(动态规划) 题面 BZOJ 题解 很明显,从任意一个有宝藏的点开始,每次走到相邻的\(dfs\)的节点就行了. 证明? 类似把一棵树上的关键点全部标记出来 显然是要走一个 ... 
- 北京Uber优步司机奖励政策(12月24日)
			滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ... 
- JavaWeb(三)——Tomcat服务器(二)
			一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 
- FastJson - 从HttpEntity到Json
			在使用java + httpClient施行API自动化时,不可避免地遇到了如下问题: 1. 用Http Response数据做断言: 2. 用上一个请求的Response内容,作为下一个请求的参数: ... 
