[Java教程]原生AJAX封装

0 2016-07-12 13:00:08

回归下原生js,网上看到的AJAX封装,遂拿来改改,不知还有何弊端,望指出!1 var ajaxHelper = { 2 /*1.0 浏览器兼容的方式创建异步对象*/ 3 makeXHR: function () { 4 //声明异步对象变量 5 var false; 6 //声明 扩展 名 7 var ]; 8 //判断浏览器是否支持 9 if (window.10 new 11 }12 //否则,只能循环遍历老式浏览器异步对象名,尝试创建,知道创建成功为止13 else if (window.ActiveXObject) {14 for (i = 0; i < ) {15 new ActiveXObject(16 if (17 break;18 }19 }20 }21 //判断 异步对象 是否创建 成功,如果 成功,则返回异步对象,否则返回false22 return false;23 },24 /*2.0 发送Ajax请求*/25 doAjax: function (method, url, data, isAyn, callback, type) {26 method = method.toLowerCase();27 //2.1创建异步对象28 var xhr = this.makeXHR();29 //2.2设置请求参数(如果是get,则带url参数,如果不是,则不带)30 xhr.open(method, url + (method == "get" ? "?" + data : ""), isAyn);31 //2.3根据请求谓词(get/post),添加不同的请求头32 if (method == "get") {33 xhr.setRequestHeader("If-Modified-Since", 0);34 } else {35 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");36 }37 //2.4设置回调函数38 xhr.onreadystatechange = function () {39 //如果接受完毕 服务器发回的 响应报文40 if (xhr.readyState == 4) {41 //判断状态码是否正常42 if (xhr.status == 200) {43 if (type.toLowerCase() == "json") {44 var ret = {};45 try {46 if (JSON) {47 ret = JSON.parse(xhr.responseText);48 } else {49 //IE8以下不支持JSON50 ret = new Function("return " + xhr.responseText);51 }52 callback(ret);53 } catch (e) {54 console.log(e.message);55 callback(false);56 }57 } else {58 //直接返回文本59 callback(xhr.responseText);60 }61 } else {62 console.log("AJAX Status Code:" + xhr.status);63 callback(false);64 }65 }66 };67 //2.5发送(如果是post,则传参数,否则不传)68 xhr.send(method != "get" ? data : null);69 },70 /*3.0 直接发送Post请求*/71 doPost: function (url, data, isAyn, callback, type) {72 this.doAjax("post", url, data, isAyn, callback, type);73 },74 /*4.0 直接发送Get请求*/75 doGet: function (url, data, isAyn, callback, type) {76 this.doAjax("get", url, data, isAyn, callback, type);77 }78 };

假设一个需求,后端要求传入两个数字n1、n2,然后返回总和。

当其中一个参数为空或者不是数字时,返回:{"status":"0", "msg":"参数有误!"}

当正确的时候,返回:{"status":"1", "sum":"//n1加n2的和"}

后端的代码就不贴出来了。

前端调用:1 document.getElementById("btnSubmit").onclick = function () { 2 ajaxHelper.doPost("后端url", "n1=10&n2=25", true, function (ret) { 3 if (!ret) { return; } 4 if (ret.status != 1) { 5 alert(ret.msg); 6 return; 7 } 8 var n = ret.sum; 9 var s = ret.status;10 }, "json");11 };

本文网址:http://www.shaoqun.com/a/239114.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

ajax

0

java原生封装_[Java教程]原生AJAX封装相关推荐

  1. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  2. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

  3. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  4. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  5. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  6. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  7. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  8. java斗地主发牌_[Java源码]扑克牌——斗地主发牌实现

    --------------------------------------- --------------------------------------- ----------一个扑克牌核心和简单 ...

  9. java excel 插件_轻量级的原生JavaScript的Excel插件——JExcel

    介绍 jExcel是一个轻量级的原生javascript插件,用于创建与Excel或任何其他电子表格软件兼容的基于Web的交互式表格和电子表格.可以从JS数组,JSON,CSV或XSLX文件创建在线电 ...

最新文章

  1. 练习2-14 求奇数分之一序列前N项和 (15 分)
  2. 线程间通信共享变量和queue
  3. ipython使用_IPython的介绍与使用
  4. EA(Enterprise Architect)UML修改字体大小
  5. Tickets HDU - 1260
  6. java 抛出异常的目的_Java实验八,异常
  7. 朴素贝叶斯分类器的python实现
  8. c语言能让制表符空9个字符码,C语言编程规范 – 嗨!大佟!
  9. insertion-sort-list——链表、插入排序、链表插入
  10. bzoj3275 Number
  11. 20届美团提前批面经
  12. 关于Javascript表单验证
  13. HMI 排行中有哪些触摸屏品牌
  14. PAT 乙级 1055  集体照
  15. Cocos游戏开发——004cc.Node坐标空间
  16. Linux下的LVM逻辑卷管理
  17. c#的decode用法
  18. Python实现自动化脚本
  19. python接入支付宝
  20. 中文版Echarts世界地图

热门文章

  1. Apache Shiro的运行流程和权限控制方式分析
  2. Visual Studio下载、安装、运行教程
  3. Coding:实现快速排序算法
  4. 线性表易错点与线性表程序设计易错点
  5. JVM与Java的体系结构(JVM入门知识体系总结)
  6. 小朋友你是否对java中的static满脸问号
  7. python 控制系统音量_pygame学习笔记(4):声音控制
  8. python递归详解_Python理解递归的方法总结
  9. python3.7安装包多大_python3.7 pip 安装第三方包
  10. Linux / Server 端收到 SIGPIPE 信号的原因