备注:我们经常会遇到使用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. require()  module.export    Object.keys()

    import API from"../../api/api.js";   var data = require('../../utils/data.js').songs;   // ...

  2. Thread,ThreadPool,Task

    线程分为前台和后台.比如我们直接new一个Thread这就是前台线程. 前台线程一定会执行. 比如我们创建2个线程:1号,2号,同时执行,假设1号是主线程,1执行完了,依旧会等待2执行完成,整个程序才 ...

  3. python网络爬虫开发实战(崔庆才)_14页_chromedriver环境配置和加载

    自己1,环境配置,我下载了相对应的Chromedriver(其实我也不知道对不对应,都是下载最新版的我猜应该会对应),然后在任何文件夹下输入command+shift+G,打开输入窗口,任何输入  / ...

  4. Nginx访问控制模块

    一.Nginx访问控制模块 Nginx默认安装的模块http_access_module,可以基于来源IP进行访问控制. 1.模块安装 nginx中内置ngx_http_access_module,除 ...

  5. ubuntu16.04下安装g2o

    根本不需要编译源码直接一行命令就可以 sudo apt-get install libpcl-dev 如果没有安装pcl_viewer就再加一行命令 sudo apt-get install pcl- ...

  6. SLAM算法中提取特征总结

    我们要知道三维空间中的点在图像中的位置,就需要提取特征与特征匹配了. 1.检测特征点 2.计算描述子 3.特征匹配 1.检测特征点 我们用到的检测特征点的方法是FAST算法,最大的特点就是快! 算法原 ...

  7. shell 日常技巧

    批量注释: :<<COMMENT code COMMENT 循环: #!/bin/bash  for varible1 in {1..5}  #for varible1 in 1 2 3  ...

  8. unigui+fastreport报表打印

    unigui+fastreport报表打印   unigui+fastreport报表打印 FASTREPORT导出成PDF报表,UNIGUI的TUniURLFrame显示PDF报表并打印. func ...

  9. Unable to launch the IIS Express Web server

    尝试运行程序,出现此异常提示Unable to launch the IIS Express Web server. 解决问题,是把网址修改为另一个试试: 把http://localhost:1114 ...

  10. 手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...