ajax请求的封装
前端的工作,免不了要用到交互,请求后端的数据,可能大多人一直选择用jq封装好的方法直接使用,要知道封装这个事我们自己也可以的,今天给大家介绍一种封装方法,而且连跨域问题都不在话下,有了这个函数,是不是ajax请求so easy了呢!!下面就是:
function ajax(obj){//做网络请求的时候,参数以对象的形式传递进来,用的之后直接传参就ok啦!
//规定:obj里面包含属性
//1.url
//2.type-----get还是post
//3,data-----前端给后端传递的参数(前端传递的时候以对象的形式)
//4,回调函数----success;
//5,回调函数----error;
//6,跨域的回调函数--callback
//7,后台接受回调函数的key值
if(obj.callBack&&obj.key){
var sc=document.createElement("script");
document.documentElement.appendChild(sc);
sc.src=obj.url+"?"+obj.key+"=callBack";
return;
}
var ajaxObj=null;
if(window.XMLHttpRequest){
ajaxObj=new XMLHttpRequest();
}else{
ajaxObj=new ActiveXObject("Microsoft.XMLHTTP");
}
//检测状态的变化
ajaxObj.onreadystatechange=function(){
if(ajaxObj.readyState==4){
if(ajaxObj.status>=200&&ajaxObj.status<300||ajaxObj.status==304){
if(obj.success){
obj.success(JSON.parse(ajaxObj.responseText));
// obj.success(ajaxObj.responseText);
}else{
alert("您忘记了success函数!");
}
}else{
if(obj.error){
obj.error(ajaxObj.status);
}else{
alert("您忘记了error函数!!");
}
}
}
}
//type转化为小写,方便使用;当用户不传type的时候,默认为get;
var type=obj.type||"get";
type=type.toLowerCase();
var params="";//字符串
//判断是否传递了参数
if(obj.data){
for(var key in obj.data){
params+=(key+"="+obj.data[key]+"&");
}
params=params.slice(0,params.length-1);
}
//当type为get的时候
if(type=="get"){
ajaxObj.open(type,obj.url+"?"+params,true);
ajaxObj.send();
}else{
ajaxObj.open(type,obj.url,true);
ajaxObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajaxObj.send(params);
}
}
ajax请求的封装的更多相关文章
- 通用ajax请求方法封装,兼容主流浏览器
ajax简单介绍 没有AJAX会怎么样?普通的ASP.Net每次运行服务端方法的时候都要刷新当前页面. 假设没有AJAX,在youku看视频的过程中假设点击了"顶.踩".评论.评论 ...
- jQuery里面ajax请求的封装
为了避免ajax漫天飞,我们需要对jQuery的代码进行封装,封装代码: function api_request(name, params, cb, scope, async, el) { if ( ...
- Ajax基础之封装3
今天接着我们上篇博文的栗子,现在我来扩大一下需求,之前是点击按钮取出新闻,现在要实现每隔一段事件进行新闻的更新.这个时候,肯定是加一个定时器,然后每隔一段事件,再进行一次Ajax请求,既然要经常用到A ...
- 通过XMLHttpRequest,ActiveXObject实现ajax请求
今天学习了原生的ajax请求.我将涉及到的ajax请求方法封装成了一个对象: var xhr={ getXHR:function(){ var XHR = null; ...
- 封装的ajax请求
在做登录注册这类提交表单数据时,我们经常需要局部刷新网页来验证用户输入的信息,这就需要用到ajax请求,我们通常需要获取表单中的数据,发起ajax请求,通过服务程序,与数据库的数据进行比对,判断信息的 ...
- ajax请求原理及jquery $.ajax封装全解析
.ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...
- 使用es6的then()方法封装jquery的ajax请求
使用场景: jsp页面中使用jquery的ajax请求比较频繁,以前vue框架的项目用过axios,所以就想着用then()封装一个公共请求的方法,这样每次请求就不用那么麻烦的写一大堆请求参数了. 示 ...
- 简单封装的ajax请求
简单封装了一个ajax请求,做一下统一处理,少写重复代码,只是一个初步的代码,没有经过优化. $.extend({ myAjax: function (option, rollBack) { var ...
- 基于jquery,ajax请求及自我终止的函数封装。
场景描述: 在我们平时的开发过程中,经常会遇到这样的情况.在搜索功能中进行模糊搜索或者联想关联. 这就要我们每次对输入框中的数据进行改动时,都要发送一次请求.当在短时间内多次操作改动时,问题就出现了. ...
随机推荐
- VS中批注的使用
SAL 是 Microsoft 源代码注释语言. 使用源代码批注,可以使代码背后的意图更加清晰. 这些注释还可以使用自动化的静态分析工具更准确地分析代码,显著减少误判.那么什么是批注,举个简单的例子, ...
- Unity 3D学习之《Unity 3D 手机游戏开发》1
P10: 设置断点步骤02,在Project窗口右键(是在下图中的红色区域,点右键)选择[Sync Mono Develop Project],打开MonoDevelop编辑器 P11: " ...
- poj2236_并查集_Wireless Network
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 24497 Accepted: 102 ...
- myEclipse svn插件安装
方法一(liuyou在安装时报空指针异常) 1.打开HELP->MyEclipse Configuration Center,切换到SoftWare标签页. 2.点击Add Site 打开对话框 ...
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...
- 【淘淘】Quartz之集群利弊
一.前言: 虽然单个Quartz实例能给予我们很好的任务job调度能力,但它不能满足典型的企业需求,如可伸缩性.高可靠性满足.假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成 ...
- Matlab函数 meshgrid
- webbench之使用(二)
[root@lam7 ~]# webbench -helpwebbench [option]... URL -f|--force Don't wait for reply ...
- Hello world!(OC)
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSLog(@"Hello ...
- Codeforces713C Sonya and Problem Wihtout a Legend(DP)
题目 Source http://codeforces.com/problemset/problem/713/C Description Sonya was unable to think of a ...