一般发送一条ajax 然后点击界面需要更改查询条件,第一种是做一个form表单比较合适的设计。更改了参数回收表单然后重新发送ajax;

还有一种是把参数缓存到变量中,然后更改了条件修改变量再次重发ajax。

我的是第二种思路实现方式如下:

有不同见解的童鞋欢迎拍砖,接受任何方式的反驳 比如 微信红包走一波 。

/**
* =======================================================================
***--------------------------加载一个等待提示框--------------------------
* =======================================================================
* 配置项:{}
*@target: "body",//需要展示的遮罩的对象
*@cssName: "_showloading",//class名称,可以自定义class
*@loadingImg: "/static/themes/vocs/ui-images/loading.gif",//遮罩图片的路径
*@loadingText: "数据正在加载,请稍后...",//提示层的提示文字
*@hideCall: null,//关闭回调函数
*@timeout: 0//是否自动关闭
* @param {Object} {target:'',cssName:'',loadingImg:'',loadingText:''}
*/
function ShowLoading(opt) {
// 默认配置项
var _default = {
'target': 'body', // 需要展示的遮罩的目标
'cssName': '_showloading', // class名称,可以自定义class
'loadingText': '数据正在加载,请稍后...', // 提示层的提示文字
'hideCall': null, // 关闭回调函数
'timeout': 0 // 是否自动关闭
}
$.extend(this, _default, opt)
if (typeof this.target == 'string')
this.target = $(this.target)
if (typeof context != 'undefined')
this.loadingImg = context + this.loadingImg
} ShowLoading.prototype.show = function (msg, callBack) {
var me = this
var isBody = $(me.target).prop('nodeName') == 'BODY'
// 获取目标的大小
var getSize = function () {
var scrollTop = isBody ? $(window).scrollTop() : $(me.target).scrollTop()
var scrollLeft = isBody ? $(window).scrollLeft() : $(me.target).scrollLeft()
// var w = isBody ? (scrollLeft+$(window).width()) : (scrollLeft+$(me.target).width())
// var h = isBody ? (scrollTop + $(window).height()) : (scrollTop + $(me.target).height())
var w = isBody ? ($(window).width()) : ($(me.target).width())
var h = isBody ? ($(window).height()) : ($(me.target).height())
return {width: w, height: h, scrollTop: scrollTop, scrollLeft: scrollLeft}
}
if (!this.$loading) {
this.loadingId = '_load' + (new Date()).valueOf()
if (!isBody)
$(me.target).css('position', 'relative')
this.$loading = $('<div>', {
'id': this.loadingId,
'class': this.cssName,
// "style": "border:1px solid red",
"html": "<div class='" + this.cssName + "-msg'>" + this.loadingText + "</div>"
}).appendTo(this.target)
var setPostion = function () {
me.$loading.css({
// width: getSize().width + "px",
width: getSize().width + 'px',
height: getSize().height + 'px',
top: getSize().scrollTop + 'px',
left: getSize().scrollLeft + 'px'
})
var sefWidth = me.$loading.children("." + me.cssName + "-msg").width(),
sefHeight = me.$loading.children("." + me.cssName + "-msg").height()
me.$loading.children("." + me.cssName + "-msg").css({
'top': function () {
return parseInt((getSize().height - sefHeight) / 2) + 'px'
},
'left': function () {
return parseInt((getSize().width - sefWidth) / 2) + 'px'
}
})
}
this.setPsIntv = setInterval(function () {
setPostion()
}, 50)
}
if (msg) {
this.loadingText = msg
this.$loading.children().text(msg)
} // 是否有回调函数
if (callBack != undefined && typeof callBack == 'function') {
this.hideCall = callBack
}
// 是否是定时关闭
if (this.timeout > 0) {
setTimeout(function () {
me.hide()
}, this.timeout)
}
return this
}
ShowLoading.prototype.hide = function () {
if (this.$loading) {
this.$loading.remove()
this.$loading = null
}
if (typeof this.hideCall == 'function') {
this.hideCall()
}
if (this.setPsIntv)
clearInterval(this.setPsIntv)
}
ShowLoading.prototype.update = function (msg) {
if (this.$loading) {
this.$loading.children().text(msg);
}
}
/**
* AJAX构造函数
* @param url 请求地址 String
* @param param 请求参数 Object
* @param callback 回调函数 Function
*/
function AJAX_Method(url, param, callback) {
this.url = url;
this.param = param;
this.callback = callback;
this.method = "GET";
this.isLoading = false;
} /*扩展实例方法*/
AJAX_Method.prototype = {
/**
*get请求
*/
get: function () {
var _this = this;
if (_this.isLoading) {
_this.showLoading();
}
$.get(_this.url, _this.param, function (response) {
if (_this.isLoading) {
_this.hideLoading();
}
_this.callback(response);
});
},
/**
*post请求
*/
post: function () {
var _this = this;
if (_this.isLoading) {
_this.showLoading();
}
$.post(_this.url, _this.param, function (response) {
if (_this.isLoading) {
_this.hideLoading();
}
_this.callback(response);
});
},
/**
* 重新请求
* @param name 参数名称 | 对象
* @param value 参数值
*/
reload: function (name, value) {
if (name) {
this.setParam(name, value);
}
this.method.toLocaleLowerCase() == "get" ? this.get() : this.post();
},
/**
* 获取请求参数
* @returns {*}
*/
getParam: function () {
return this.param;
},
/**
* 设置参数
* @param name 参数名称 | 对象
* @param value 参数值
*/
setParam: function (name, value) {
if (typeof name == "string") {
this.param[name] = value;
} else {
$.extend(this.param, name)
} },
/**
* 展示遮罩动画
*/
showLoading: function (opt) {
if (this.loading) {
this.hideLoading();
}
this.loading = getTopWindow().AJAX_Loading(opt);
},
/**
* 影藏遮罩动画
*/
hideLoading: function () {
if (this.loading) {
this.loading.hide();
this.loading = null;
}
}
} /**
*
* @returns {Window | WorkerGlobalScope}
*/
function getTopWindow() {
var _top = self;
while (_top != _top.parent) {
if (typeof _top.parent.AJAX_Method != "undefined") {
_top = _top.parent;
continue;
}
break;
}
return _top;
} /**
* 封装get请求
*/
function AJAX_GET(url, param, callback) {
var ajax = new AJAX_Method(url, {}, new Function());
//处理参数无序
for (var i = 1; i < arguments.length; i++) {
var parameter = arguments[i];
var typeName = typeof parameter;
if ("boolean" == typeName) {
ajax.isLoading = parameter;
} else if ("object" == typeName) {
ajax.param = parameter;
} else if ("string" == typeName) {
ajax.method = parameter;
} else if ("function" == typeName) {
ajax.callback = parameter;
}
}
//发送请求
ajax.get();
return ajax;
} /**
* 封装post请求
*/
function AJAX_POST(url, param, callback) {
var ajax = new AJAX_Method(url, {}, new Function());
//处理参数无序
for (var i = 1; i < arguments.length; i++) {
var parameter = arguments[i];
var typeName = typeof parameter;
if ("boolean" == typeName) {
ajax.isLoading = parameter;
} else if ("object" == typeName) {
ajax.param = parameter;
} else if ("string" == typeName) {
ajax.method = parameter;
} else if ("function" == typeName) {
ajax.callback = parameter;
}
}
ajax.method = "POST";
//发送请求
ajax.post();
return ajax;
} /**
* 展示动画
* @param opt
* @returns {ShowLoading|ShowLoading}
* @constructor
*/
function AJAX_Loading(opt) {
var loading = new ShowLoading(opt);
loading.show();
return loading;
} //测试示例: //标准发送请求
var getUserInfo = AJAX_GET("test.json", {name: "张三李四"}, function (data) {
alert(1);
}, true);
// 参数无序调用
/*var getUserInfo2 = AJAX_GET("test.json", function (data) {
alert(1);
})*/ //设置单个参数
getUserInfo.setParam("name", "李四张三");
//设置多参数
getUserInfo.setParam({"name":"李四张三","time": "2019/12/04"}); console.log(getUserInfo.param);
//刷新结果
getUserInfo.reload({"time": "2019/12/12"});
//或者
getUserInfo.get();
//把请求方式修改成post
getUserInfo.post();

AJAX_Method

观察network 视图效果如下:

是不是能 愉快的玩耍了

如果这篇文章对您有帮助,您可以打赏我

技术交流QQ群:15129679

 
 

ajax的请求,参数怎么管理?的更多相关文章

  1. JQuery Ajax 请求参数 List 集合处理

    引言 JQuery Ajax 发送请求参数一般都是基本类型,比如 String.int:那么,请求参数如果是 List 集合应该如何处理呢? 情况一:Aajx 发送 List 类型请求参数 举例如下: ...

  2. ajax请求参数为中文乱码的情况

    解决中文乱码问题的方法有很多. 一.前提是ajax请求传递参数对象到后台,对象中的某个参数的值为中文,到后台之后出现乱码,导致报错.问题解决如下: rest层: 二.在tomcat的server.xm ...

  3. Ajax请求参数较长导致请求失败

    Ajax请求参数比较长,第5行参数大概1100个字符吧,是接口的请求报文. $.ajax({ type:"POST", url:"${ctx}/test.action?m ...

  4. SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析

    SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...

  5. 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了

    如下的$.ajax函数 $.ajax({ url: url,// 请求的地址 data:{id:id,pieceId:pieceId,pieceDesc:pieceDesc,actualStock:a ...

  6. Ajax请求参数到一个URL包含下划线或者v(_、v)

    Ajax请求参数到一个URL包含下划线或者v 初学者的我,在F12时,看到这个地址就会很奇怪,不理解什么东西 经过查找了解到浏览器默认开启缓存,该参数不是其他请求所必须的,把它去掉不影响数据的获取 h ...

  7. Ajax 请求参数过多导致 400 错误 and BCryptPasswordEncoder 加密判断

    2019/06/19 先分享一种密码加密方式: Spring Security 提供了 BCryptPasswordEncoder类, 实现Spring的PasswordEncoder接口使用BCry ...

  8. ajax异步请求实例

    1. 问题分析 用户管理显示页面:usermanagement.tpl(也可以说是MVC中的V,即视图) 用户管理数据发送页面:usermanagement.php(也可以说是MVC中的M,即模型) ...

  9. nodejs接收post请求参数

    原文 https://blog.csdn.net/u013263917/article/details/78682270#1.2 nodejs接收post请求参数1.1-浏览器发送post请求参数的方 ...

随机推荐

  1. 启动tomcat出现Removing obsolete files from server... Could not clean server of obsolete ……错误

    在Eclipse启动tomcat出现"Removing obsolete files from server... Could not clean server of obsolete …… ...

  2. day 42 mycql 数据类型

    关于性别字段的存储数据类型选用 -- 性别字段 create table actor2 (id int not null auto_increment primary key,name char(32 ...

  3. TMS320DM642学习----第一篇(硬件连接)

    DSP设备型号:SEED-DTK-VPM642(目前实验室用途:视频处理,图像处理方向,预计搭载目标跟踪以及云台防抖等算法) 官网链接:http://www.seeddsp.com/index.php ...

  4. 20165220 Java第六周学习总结

    教材学习内容总结 正则表达式:正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称作正则表达式的元字符. 链表:由若干个称作结点的对象组成的一种数据结构,用于 ...

  5. MySql与python交互

    No1: 引入MySql:python2是Mysqldb,python3是pymysql No2: Connection对象 用于建立与数据库的连接 创建对象:调用connect()方法 conn=c ...

  6. Xamarin Essentials教程检查网络连通性Connectivity

    Xamarin Essentials教程检查网络连通性Connectivity   网络连通性其实就是检测当前设备有没有连接网络.网络连通性在很多与网络相关的应用程序中会使用到.在Xamarin中如果 ...

  7. Yolov3参数解释以及答疑

    目录 参数解析 训练答疑 ​ 参数解析 [net] #Testing #batch=1 //test:一次一个图片 #subdivisions=1 #Training batch=32 //一次迭代送 ...

  8. Cisco 12系列 AP 初始化配置-2-初始化配置

    用于SSH登陆这个设备 bridge irb bridge 1 route ip  开启路由功能 interface BVI1 ip address 10.15.106.44 255.255.255. ...

  9. RMQ问题 [luogu 3865]

    原题地址 ST表模板题,尝试用单点修改线段树. 原本以为线段树会被卡掉,但是还是险过了.实践证明,快速读入很有用. #include<bits/stdc++.h> using namesp ...

  10. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...