备注:我们经常会遇到使用jquery获取某个地址下的部分页面内容,然后替换当前页面对应内容,也就是:局部刷新功能。

当然也可以使用get/post请求获取数据,修改数据,可以参考以下JS代码:

走过的坑:

1-$.ajax   参数:  dataType  是区分大小写的,写成了datatype会不识别的???

2- window["Ajax"] = Ajax;   写为:  window["Ajax"] =new Ajax();    这种单例如果作为全局变量报错的话,在高并发的请求下会出现: window.Ajax 实例里参数信息是会共享,参数信息被覆盖等问题???

3-$.ajax Post/Get  回调方法使用window.Ajax和this访问属性,这里经过改造后,在函数里面声明一个: var _this=this;  就可以在回调函数内部实现 内部实例数据共享了,也会防止出错???

下面JS的使用示例:

new window.Ajax().Init_Two("postUrl", { u: userid, e: base64Email, t: token }, function (jsonData) {
  //success code
}).Post();

自定义模拟类-其中Init()方法是个人项目需要使用,大家可以使用Init_Two方法初始化,如上示例:

// 2-Ajax模拟类
var Ajax = function () {
var _this = this;
//请求路径
_this.ajaxUrl = "";
//传入的参数对象
_this.data = {};
//返回数据类型:json/jsonp/xml/text...
_this.dataType = "text";
//是否异步
_this.isAsync = true,
//回调函数
_this.rollBack = function (result) {
}; _this.Init = function (handlerName, actionName, dataObject, rollBack) {
_this.ajaxUrl = "/ajax/" + handlerName + ".js?action=" + actionName;
_this.data = dataObject;
_this.rollBack = rollBack;
return _this;
};
_this.Init_Two = function (actionUrl, dataObject, rollBack) {
_this.ajaxUrl = actionUrl;
_this.data = dataObject;
_this.rollBack = rollBack;
return _this;
}; //Get请求
_this.Get = function (dataType, isAsync) {
if (dataType != null) {
_this.dataType = dataType;
};
if (isAsync != null) {
_this.isAsync = isAsync;
};
$.ajax({
type: "GET",
url: _this.ajaxUrl,
data: _this.data,
dataType: _this.dataType,
async: _this.isAsync,//false代表只有在等待ajax执行完毕后才执行
success: function (json) {
var result = json;
if (_this.dataType == "text") {
try {
result = JSON.parse(json);
} catch (e) {
result = new Function("return " + json)();
}
}
if (_this.rollBack && _this.rollBack instanceof Function) {
_this.rollBack(result);
}
},
error: function (e) {
console.log(e);
}
});
};
//获取请求地址的HTML内容(select选择器,是否异步)
_this.GetHtml = function (jquerySelectDom, isAsync) {
if (isAsync != null) {
_this.isAsync = isAsync;
}
$.ajax({
type: "GET",
url: _this.ajaxUrl,
data: _this.data,
dateType: "html",
//false代表只有在等待ajax执行完毕后才执行
async: _this.isAsync,
success: function (data) {
if (jquerySelectDom != "") {
var $data = $(data);
//由于$data是个集合,得到的是所有一级节点的jquery集合,所以,先从一级集合中找,再从所有子元素中找
var $result = $data.next(jquerySelectDom);
if ($result.length == 0) {
$result = $data.find(jquerySelectDom);
}
var resultHtml = "";
if ($result.length > 0) {
resultHtml = $result.html();
}
if (_this.rollBack && _this.rollBack instanceof Function) {
_this.rollBack(resultHtml);
}
} else {
return data;
}
}
});
};
//普通Post请求(请求地址:postUrl,,是否异步)
_this.Post = function (dataType, isAsync) {
if (dataType != null) {
_this.dataType = dataType;
};
if (isAsync != null) {
_this.isAsync = isAsync;
};
$.ajax({
type: "POST",
url: _this.ajaxUrl,
data: _this.data,
dataType: _this.dataType,
//false代表只有在等待ajax执行完毕后才执行
async: _this.isAsync,
success: function (json) {
var result = json;
if (_this.dataType == "text") {
try {
result = JSON.parse(json);
} catch (e) {
result = new Function("return " + json)();
}
}
if (_this.rollBack && _this.rollBack instanceof Function) {
_this.rollBack(result);
}
},
error: function (e) {
console.log(e);
}
});
};
//模拟Form表单请求-参数为FormData对象
_this.FormPost = function () {
$.ajax({
type: "POST",
url: _this.ajaxUrl,
data: _this.data,
//false代表只有在等待ajax执行完毕后才执行
async: _this.isAsync,
processData: false,
contentType: false,
success: function (json) {
try {
result = JSON.parse(json);
} catch (e) {
result = new Function("return " + json)();
}
if (_this.rollBack && _this.rollBack instanceof Function) {
_this.rollBack(result);
}
},
error: function (e) {
console.log(e);
}
});
};
};
window["Ajax"] = Ajax;

jquery发起get/post请求_或_获取html页面数据的更多相关文章

  1. MVC中使用JQuery方式进行异步请求和使用自带方式进行异步请求

    在MCV中使用异步请求可以很很高效地进行前台和后台的数据传递,在这里,笔者为初学者介绍两种在MVC中常用的异步请求处理方式. 在这里,我们通过在一个页面中放置一个按钮来异步获取当前服务器端的系统时间为 ...

  2. Javascript Jquery 中的数组定义与操作_子木玲_新浪博客

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  3. jquery中如何以逗号分割字符串_百度知道

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  4. 2、尚硅谷_SSM高级整合_使用ajax操作实现页面的查询功能

    16.尚硅谷_SSM高级整合_查询_返回分页的json数据.avi 在上一章节的操作中我们是将PageInfo对象存储在request域中,然后list页面解析request域中的对象实现信息的显示. ...

  5. jQuery jsonp跨域请求

    跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 浏览器的同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互. 如果协议,端口和主机对于两个页面是相同的,则两个页面具 ...

  6. js分析 天_眼_查 字体文件

    0. 参考 js分析 猫_眼_电_影 字体文件 @font-face 1. 分析 1.1 定位目标元素 1.2 查看网页源代码 1.3 requests 请求提取得到大量错误信息 对比猫_眼_电_影抓 ...

  7. 软件测试_Loadrunner_APP测试_性能测试_脚本优化_脚本回放

    本文主要写一下在使用Loadrunner录制完毕APP脚本之后如何对脚本进行回放,如有不足,欢迎评论补充. 如没有安装Loadrunner软件,请查看链接:软件测试_测试工具_LoadRunner: ...

  8. jQuery jsonp跨域请求详解

    跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 浏览器的同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互. 如果协议,端口和主机对于两个页面是相同的,则两个页面具 ...

  9. JavaWeb_day04搜索_乱码_路径_转发重定向_cookie

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 搜索功能 DAO层都是一些数据库的增删改查操作 Ser ...

随机推荐

  1. 基于jmeter的性能测试平台(二) 一个构想

    之前基于jmeter搭好了分布式测试平台,但是感觉还是很粗糙,打算给它穿点衣服. 整个架构差不多就像下面这个图. (1)基于python django做一个web页面,友好地管理测试过程 (2)con ...

  2. IO在Socket中的应用

    一.BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个连接 ...

  3. 816. Ambiguous Coordinates

    We had some 2-dimensional coordinates, like "(1, 3)" or "(2, 0.5)".  Then, we re ...

  4. 某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践

    阅读本文大概需要 4.6 分钟. 本文来自 https://juejin.im/post/59eafab36fb9a045076eccc3 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面 ...

  5. C#中Quartz的简单易懂定时任务实现

    作为一个优秀的开源调度框架,Quartz 具有以下特点: 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求: 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种 ...

  6. Mybatis框架五:动态SQL

    1.if   where 实现一个简单的需求: 根据性别和名字查询用户: 正常来写: <select id="selectUserBySexAndUsername" para ...

  7. python爬取猫眼电影top100

    最近想研究下python爬虫,于是就找了些练习项目试试手,熟悉一下,猫眼电影可能就是那种最简单的了. 1 看下猫眼电影的top100页面 分了10页,url为:https://maoyan.com/b ...

  8. Oracle SQL调优记录

    目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...

  9. 导出到word

    导出到excel功能会常做,但是导出到word功能很少做,项目遇到,在这里做一下标记. 导出到excel比较容易,excel都有固定格式也模板,但是word需要自己写模板,这里用了freemarker ...

  10. js代码跑马灯效果-----轮播图字效果!

    文字元素: <p id="yc-msg">你有本事来打我呀!</p> js执行代码: function ycMsg() { // 获取 标签 var pOb ...