jquery发起get/post请求_或_获取html页面数据
备注:我们经常会遇到使用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页面数据的更多相关文章
- MVC中使用JQuery方式进行异步请求和使用自带方式进行异步请求
在MCV中使用异步请求可以很很高效地进行前台和后台的数据传递,在这里,笔者为初学者介绍两种在MVC中常用的异步请求处理方式. 在这里,我们通过在一个页面中放置一个按钮来异步获取当前服务器端的系统时间为 ...
- Javascript Jquery 中的数组定义与操作_子木玲_新浪博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- jquery中如何以逗号分割字符串_百度知道
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 2、尚硅谷_SSM高级整合_使用ajax操作实现页面的查询功能
16.尚硅谷_SSM高级整合_查询_返回分页的json数据.avi 在上一章节的操作中我们是将PageInfo对象存储在request域中,然后list页面解析request域中的对象实现信息的显示. ...
- jQuery jsonp跨域请求
跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 浏览器的同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互. 如果协议,端口和主机对于两个页面是相同的,则两个页面具 ...
- js分析 天_眼_查 字体文件
0. 参考 js分析 猫_眼_电_影 字体文件 @font-face 1. 分析 1.1 定位目标元素 1.2 查看网页源代码 1.3 requests 请求提取得到大量错误信息 对比猫_眼_电_影抓 ...
- 软件测试_Loadrunner_APP测试_性能测试_脚本优化_脚本回放
本文主要写一下在使用Loadrunner录制完毕APP脚本之后如何对脚本进行回放,如有不足,欢迎评论补充. 如没有安装Loadrunner软件,请查看链接:软件测试_测试工具_LoadRunner: ...
- jQuery jsonp跨域请求详解
跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 浏览器的同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互. 如果协议,端口和主机对于两个页面是相同的,则两个页面具 ...
- JavaWeb_day04搜索_乱码_路径_转发重定向_cookie
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 搜索功能 DAO层都是一些数据库的增删改查操作 Ser ...
随机推荐
- UML model refactoring: a systematic literature review
一.基本信息 标题:UML model refactoring: a systematic literature review 时间:2015 出版源:Empirical Software Engin ...
- 利用 awk 统计nginx 中某一个用户的访问次数
线上总是会遇到攻击,所以就需要分析 access.log 看看那些用户的访问次数不正常,针对这些不正常的用户,要做处理,以 access.log为例说明下怎么统计. 通过 access.log 日志来 ...
- Microsoft Azure IoTHub Serials 2 - 如何为android应用添加IoTHub支持
1. 在build.gradle(app)文件的dependencies中添加对以下项的依赖: 'com.microsoft.azure.sdk.iot:iot-device-client:1.5.3 ...
- 谈谈Java中的代理模式
首先来看一下代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与 ...
- IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?
1.前言 IM的群聊消息,究竟存1份(即扩散读方式)还是存多份(即扩散写方式)? 上一篇文章<IM群聊消息的已读回执功能该怎么实现?>是说,“很容易想到,是存一份”,被网友们骂了,大家争论 ...
- 从零开始单排学设计模式「UML类图」定级赛
阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...
- 吴恩达机器学习笔记37-学习曲线(Learning Curves)
学习曲线就是一种很好的工具,我经常使用学习曲线来判断某一个学习算法是否处于偏差.方差问题.学习曲线是学习算法的一个很好的合理检验(sanity check).学习曲线是将训练集误差和交叉验证集误差作为 ...
- Ubuntu 18.04基础软件安装
1.fcitx 这个应该是最基础的了,虽然系统自带的也有,不过说实话可能是我还不会配置,我觉得是不好用,坚持用了一周后还是换回了小企鹅,最初是装小企鹅时失败了被迫坚持用了一周,当时失败情况是这样的,使 ...
- 解读JavaScript 之引擎、运行时和堆栈调用
转载自开源中国 译者:Tocy, 凉凉_, 亚林瓜子, 离诌 原文链接 英文原文:How JavaScript works: an overview of the engine, the runtim ...
- ssh免密码快速登录配置
使用ssh登录服务器的时候,需要输入ip地址.端口.用户名.密码等信息,比较麻烦,容易输错.还好,通过客户端和服务器的配置参数,可实现免密码快速登录.服务器可通过保存客户端的公钥,用于验证客户端的身份 ...