这篇东西本身是非常基础的,但是经常在处理ajax返回值的时候还是会犯各种小错误,所以就想到把这些方法结合以前写过的代码片段整理一下,方便以后复习和使用。另外呢,虽然能搜到很多类似的文档,但是整理一份自己的还是坠吼的= ̄ω ̄=
ajax方法的参数
常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法。除了这些以外还有很多其他内置的参数 需要注意的是: 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。 4.async: 要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。 5.cache: 要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。 6.data: 要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看 processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。 7.dataType: 要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。可用的类型如下: xml:返回XML文档,可用JQuery处理。 html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。 script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。 json:返回JSON数据。 jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。 text:返回纯文本字符串。 8.beforeSend: 要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数。
function(XMLHttpRequest){
this; //调用本次ajax请求时传递的options参数
}
9.complete: 要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
function(XMLHttpRequest, textStatus){
this; //调用本次ajax请求时传递的options参数
}
10.success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
(1)由服务器返回,并根据dataType参数进行处理后的数据。
(2)描述状态的字符串。
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //调用本次ajax请求时传递的options参数
}
11.error: 要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下:
function(XMLHttpRequest, textStatus, errorThrown){
//通常情况下textStatus和errorThrown只有其中一个包含信息
this; //调用本次ajax请求时传递的options参数
}
12.contentType: 要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。 13.dataFilter: 要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
function(data, type){
//返回处理后的数据
return data;
}
14.dataFilter: 要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
function(data, type){
//返回处理后的数据
return data;
}
15.global: 要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件。 16.ifModified: 要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。 17.jsonp: 要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,例如{jsonp:‘onJsonPLoad‘}会导致将"onJsonPLoad=?"传给服务器。 18.username: 要求为String类型的参数,用于响应HTTP访问认证请求的用户名。 19.password: 要求为String类型的参数,用于响应HTTP访问认证请求的密码。 20.processData: 要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。 21.scriptCharset: 要求为String类型的参数,只有当请求时dataType为"jsonp"或者"script",并且type是GET时才会用于强制修改字符集(charset)。通常在本地和远程的内容编码不同时使用。 案例代码:
$(function(){
$(‘#send‘).click(function(){
$.ajax({
type: "GET",
url: "test.json",
data: {username:$("#username").val(), content:$("#content").val()},
dataType: "json",
success: function(data){
$(‘#resText‘).empty(); //清空resText里面的所有内容
var html = ‘‘;
$.each(data, function(commentIndex, comment){
html += ‘‘;
});
$(‘#resText‘).html(html);
}
});
});
});
22.顺便说一下$.each()函数: $.each()函数不同于JQuery对象的each()方法,它是一个全局函数,不操作JQuery对象,而是以一个数组或者对象作为第1个参数,以一个回调函数作为第2个参数。回调函数拥有两个参数:第1个为对象的成员或数组的索引,第2个为对应变量或内容。
需要注意的地方:
1. 如果不指定dataType的话,会根据返回的头部信息判断(就是Content-type)。
综论
ajax返回3种数据格式:html文本格式,xml通用格式,json格式, 数据类型:整数,字符串,数组,对象
ajax返回整数类型
/**
* ajax_delete
*/
$(".delete").click(function(){
var id = $(this).attr('id');
var flag = confirm("确定要删除第"+id+"条信息吗?");
if(flag){
var tr = $(this).parent().parent();
$.get("index.php?r=demo1/delete",{id:id},function(data){
console.log(data);
if(data==1){
tr.remove();
alert("删除成功");
}else{
alert("删除失败");
}
})
}
})
这样,后台一个判断,执行则返回1就好了,可以说是最简单的ajax了。 通常返回整形都是做判断用。是否删除啊,.....,虽然简单,但是很常用。
ajax返回Html/text(字符串类型)
与上面返回int相对应的呢...比如ajax添加,就会返回html或者text,也就是string类型的数据。
ajax返回json
因为json没有格式,相同内容占用空间少处理快,所以较xml,字符串(text/html)而言,我们更经常处理json。
$.ajax({
type:"GET",
url:"address_do.php",
//dataType:"json",
data:{postcode:postcode},
success:function(data){
console.log(data);
location.href="address_do.php";
if(data.success == 1){
var str = "";
str += ""+data.result.lists[0].simcall+"
";
str += ""+data.result['asc']+"
";
$("button").after(""+str+" ");
}
}
})
$(function(){
$("#search").click(function(){
var title = $("#title").val();/*alert(title);*/
$.ajax({
type:"GET",
url:"index_baidu_do.php",//
dataType:"json",
data:{"title":title},
success:function(data){
var str = "";
if(data == 0){
str+="没有搜索到相关数据 ";
}else{
for(var i=0;i';
str+=''+data[i].title+' ';
str+=''+data[i].content+' ';
str+=''+data[i].website+' ';
str+=''+data[i].time+' ';
str+='';
}
}
$("#table").html(str);
}
})
})
})
$.get(url,data,function(msg){
msg = eval("("+msg+")");
if(!(/^[0-9][0-9]{5}$/.test(postcode))){
str += "您输入的邮政编码不正确
";
$("button").after(""+str+" ");
}else{
str += ""+msg.result.lists[0].simcall+"
";
str += ""+msg.result['asc']+"
";
$("button").after(""+str+" ");
}
},'json');alert(data);
success:function(data){
console.log(data);
var result = data['result'];
var str = "";
str += "手机号 归属地 区号 数据来源 "+result['phone']+" "+result['att']+" "+result['postno']+"
";
$("#click").after(str);
}
$.ajax({
type: "GET",
url: "Ajax/Test.ashx",
data: "HandleType=GetList&PName=" + escape($("#localvalue").val()), //要发送的数据
dataType: "text",
success: function (data) {
if (data != null && data != "") {
var dataObj = eval("(" + data + ")"); //转换为json对象
var html = "";
for (var i = 0; i < dataObj.length; i++) {
html += "";
html += "" + (parseInt(i) + parseInt(1)) + " " + dataObj[i].Name + " ";
html += " ";
}
$("#table").html(html);
}
}
})
html部分
eval的使用
PS:红色部分是容易出错的地方,也就是ajax返回数据的拼接,也是ajax的难点之一 。 另外,需要注意的是,这段代码里设定返回数据类型是text,所以需要用eval把返回数据处理 参考http://blog.csdn.net/ztzy520/... 用eval()方法把返回来的json数据转换成数组 data=eval('('+data+')');
$("#search").click(function(){
var obj = $(this);
var searchContent = obj.prev().val();
alert(searchContent);
$.ajax({
url:"index.php?r=news/search",
type:"post",
dataType:"json",
data:{searchContent:searchContent},
success:function(data){
var str = "";
str+='';
str+='';
str+='ID ';
str+='新闻标题 ';
str+='新闻内容 ';
str+='分类 ';
str+='图片 ';
str+='操作 ';
str+=' ';
if(data == 0){
str+="没有搜索到相关数据 ";
}else{
for(var i=0;i';
str+=''+data[i].news_id+' ';
str+=''+data[i].newsTitle+' ';
str+=''+data[i].newsContent+' ';
str+=''+data[i].cate_name+' ';
str+=' ';
str+='删除 /修改 ';
str+='';
}
}
$("#table").html(str);
}
})
})
说实话,即使把这个掌握了,即使是处理一些最简单的项目也并不是能轻易拿下,因为实际生产环境涉及到的业务逻辑啊,框架啊(比如yii框架会默认加载模板,这样返回值会很难处理)等等一些我们意想不到的东西。但是我目前的看法是,ajax处理的话代码逻辑会非常清晰,再者说ajax的确是作为一个码农最基本的技能之一。 第一次写博客兼学识有限,以后还会有修改,求轻拍。
你可能感兴趣的:(ajax如何处理服务器返回的3种数据格式)
MySQL 进阶:运维与架构 - 从链式复制到主从复制
墨夶
数据库学习资料1 mysql 运维 架构
MySQL进阶:运维与架构-从链式复制到主从复制在MySQL数据库的高可用性和扩展性架构中,链式复制提供了一种灵活的方式来扩展复制拓扑结构。然而,在某些情况下,你可能需要将复杂的链式复制架构简化为主从复制架构,例如为了减少延迟、简化管理或者应对特定的安全要求。本文将详细介绍如何从链式复制架构转换回主从复制架构,并提供相应的操作步骤和注意事项。❓引言:为什么从链式复制回到主从复制❓尽管链式复制提供了
MySQL 进阶:运维与架构 - 从主从复制到链式复制
墨夶
数据库学习资料1 mysql 运维 架构
MySQL进阶:运维与架构-从主从复制到链式复制在MySQL数据库的高可用性和扩展性架构中,主从复制是一种常见的技术手段。通过主从复制,可以实现数据的备份、故障恢复、读写分离等功能。然而,随着业务规模的扩大和复杂度的增加,单一的主从复制架构可能无法满足更高的需求。因此,链式复制作为一种扩展形式,逐渐成为数据库架构师们关注的重点。本文将详细介绍从主从复制到链式复制的演进过程,以及如何实现和管理链式复
解锁SQL递归查询:WITH RECURSIVE的深度解析
2401_85762266
sql 数据库
标题:解锁SQL递归查询:WITHRECURSIVE的深度解析在数据的层级结构中探索,犹如穿梭于迷宫,每个节点都可能隐藏着通往更深层次的路径。SQL的WITHRECURSIVE正是我们手中的阿莉阿德涅之线,引领我们深入数据的每一个角落。本文将详细解读WITHRECURSIVE的神秘力量,通过实际代码示例,展示如何使用这一强大的递归查询功能。一、WITHRECURSIVE的魔法起源WITHRECUR
【经典算法】LeetCode 66. 加一(Java/C/Python3实现含注释说明,简单)
天天学长爱编程
LeetCode 算法 leetcode
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。示例1:输入:[1,2,3]输出:[1,2,4]解释:输入数组表示数字123。示例2:输入:[4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字4321。思路及实现方式一:反转数组后逐位相加思路首先,将数组反
掌握Gradle代理配置:加速你的构建过程
2401_85743969
深度学习 人工智能 数据库
掌握Gradle代理配置:加速你的构建过程在企业开发环境中,访问外部网络资源时经常需要通过代理服务器。Gradle作为Java项目自动化构建工具,提供了灵活的代理配置选项,以确保即使在代理环境下也能顺畅地进行依赖管理和项目构建。本文将详细介绍如何在Gradle中配置代理服务器,帮助你加速构建过程。一、代理服务器概述代理服务器充当客户端和目标服务器之间的中介,它可以用于访问控制、数据加密、缓存数据等
【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语言描述)
多思考少编码
洛谷入门赛题解 算法 c++ python 开发语言
前言:觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)如果觉得有帮助,或者觉得我写的好,可以点个赞或关注,也可以看看我的一些其他文章,我之后也会更新一些基础算法详细解释比赛链接:【LGR-196-Div.4】洛谷入门赛#26-洛谷|
[NISACTF 2022]easyssrf
迭归
web安全
打开题目所在的环境,发现是快照获取的工具,这里我尝试输入的是百度的网址,发现他会返回这个网站的一些基本信息:这个题目提示了ssrf,我们这里用file协议开始测试:file:///etc/password发现返回的结果是:害羞羞,试试其他路径?然后这里可能是file协议能用但是读取不了这个文件尝试:file:///flag这里运行之后给了提示:这里输入:file:///fl4g给了提示:这里直接访
程序代码篇---Python日志输出
Ronin-Lotus
程序代码篇 python 学习 数据挖掘 模块测试 性能优化 安全架构 人机交互
文章目录前言Python日志输出python的logging日志库模块(一)日志级别:1.DEBUG2.INFO3.WARNING4.ERROR5.CRITICAL(二)logging模块中四个核心组成组件1.Logger2.Handler3.Formatter4.Level5.实例6.RotatingFileHandler日志处理器总结前言本文仅仅简单介绍了Python中日志输出管理。Pytho
Vue 中实现修改数组,并保持页面渲染数据是响应式更改
上趣工作室
vue3.x vue2.x vue.js javascript 前端
如果你在Vue中使用数组并希望确保对数组项的修改是响应式的,直接替换数组项可能不会触发Vue的响应式更新。为了确保响应式更新,你可以使用Vue提供的Vue.set()方法(在Vue2中)或使用this.$set()方法(在Vue2和Vue3中的组合式API)。示例代码(Vue2和Vue3)假设你在Vue组件中处理这个问题:UpdateCard{{card.name}}:{{card.value}}
python,如何设置和读取文件的路径,详细版
资源存储库
算法 笔记 python 开发语言
目录python,如何设置和读取文件的路径,详细版1.路径的基本概念2.设置路径手动指定路径使用os和pathlib模块1.使用os.path2.使用pathlib3.文件读取和写入文本文件的读取文本文件的写入逐行读取4.检查文件和目录是否存在5.获取和设置当前工作目录6.处理跨平台路径总结python,如何设置和读取文件的路径,详细版在Python中,设置和读取文件路径是一个常见任务。以下是详细
leetcode24-两两交换链表中的节点
记得早睡~
算法小课堂 链表 数据结构 leetcode 算法
leetcode24思路本题仍然引入虚拟头节点来实现会更加简单,因为不用单独考虑对于头节点进行交换的场景对于边界条件考虑更少,交换的步骤按照下图中的步骤来首先将dummy->22->11->3但是在第一步的时候,dummy->2,我们发现在dummy和1之间的联系就断开了,此时无法获取到1这个节点,所以需要在步骤执行前先将1这个节点保存起来,在最后执行完以后呢,我们需要把cur更新到下次交换的前一
Linux 文件权限详解
久绊A
# Linux 服务器 linux 运维
目录前言查看文件权限修改文件权限符号方式数字方式前言Linux文件权限是系统中非常重要的概念之一,用于控制对文件和目录的访问。权限分为读(Read)、写(Write)、执行(Execute)三个部分,分别表示对文件的读取、修改和执行操作的权限。文件权限可以分为三类用户:文件所有者(Owner)、文件所属组(Group)、其他用户(Others)。查看文件权限可以使用ls-l命令来查看文件的详细权限
【商城系统技术选型】
启山智软 商城 源码
微信小程序 小程序 java
商城系统技术选型是一个复杂但至关重要的过程,它直接关系到商城系统的性能、可扩展性、安全性以及用户体验等多个方面。以下是一些关键的技术选型考虑因素:前端技术选型框架选择:React或Vue.js等流行前端框架是不错的选择,它们具有良好的可组件化和可重用性,且社区资源丰富,有大量的插件和工具可供使用,能提高开发效率和界面的交互性。响应式设计:确保系统能自适应不同设备屏幕,如手机、平板、电脑等,提供一致
Python 获取字典的值:全面指南
egzosn
python java 服务器 前端 linux
字典(dict)是Python中一个强大的数据结构,用于存储键值对。无论是处理JSON数据,还是设计复杂的配置文件,字典都无处不在。本文将全面介绍在Python中获取字典值的各种方法,通过多个详细的代码示例,帮助你掌握如何在不同场景下灵活操作字典。一、字典基础知识在Python中,字典使用花括号{}定义,其键必须是不可变的(如字符串、数字或元组),值可以是任意类型。以下是一个简单的字典示例:登录后
MySQL 进阶:运维与架构 - 延迟复制
墨夶
数据库学习资料1 mysql 运维 架构
MySQL进阶:运维与架构-延迟复制在MySQL的主从复制架构中,延迟复制(DelayedReplication)是一种特殊的复制策略,它允许从服务器(Slave)在接收到主服务器(Master)的二进制日志事件后,延迟一段时间再执行这些事件。这种机制在多种场景下都非常有用,例如,当需要在从服务器上保留旧的数据版本以供审计或备份时,或者当需要在从服务器上进行一些非实时的数据分析时。本文将详细介绍M
简单线性插值去马赛克算法的Python实现
大DA_辉
ISP图像处理_python python 计算机视觉 人工智能
在图像处理领域中,去马赛克(Demosaicing)是一项关键技术,用于从单色彩滤波阵列(CFA)图像恢复全彩图像。本文将介绍一种简单的线性插值去马赛克算法,并将其从MATLAB代码转换为Python代码。最终结果将展示如何从Bayer格式的图像数据恢复出RGB全彩图像。什么是马赛克图像?马赛克图像是一种通过在传感器上覆盖彩色滤光片阵列(CFA)生成的单通道图像。最常见的CFA模式是Bayer模式
嵌入式硬件篇---PWM&电机&舵机
Ronin-Lotus
嵌入式硬件篇 嵌入式硬件 c语言 学习 单片机 stm32 51单片机 硬件工程
文章目录前言第一部分:电机1.按照工作电源分类直流电机交流电机2.按照结构原理分类同步电机异步电机有刷电机无刷电机3.按照电机的使用目的驱动电机执行电机直驱电机编码器额外小知识:第二部分:PWM1.实质2.面积等效原理3.实例舵机舵机按转动角度分1.小角度舵机(0-90°)2.中角度舵机(0-180°)3.大角度舵机(0-360°)舵机按控制方式分1.数字舵机2.模拟舵机总结前言本文简单介绍了电机
OpenStack的G版Keystone对象模型
ztejiagn
OpenStack
Users:表示API的一个特定使用者,属于一个指定的domain。可以赋予user权限(role),每一个user-domain或user-project都可以有一组权限。Groups:表示一组拥有某权限的用户,属于一个指定的domain。可以赋予group特定的role,此时group内的user都自动具备该role表示的权限。Credentials:与user关联的认证凭据。一个user可能
vant组件库的按需导入导出
ordinary90
前端全栈开发 VUE vue.js javascript 前端
要按需导入和导出Vant组件库的Vuex模块,首先需要在项目的入口文件中引入所需的组件:import{Button,Toast}from'vant';import'vant/lib/index.css';Vue.use(Button);Vue.use(Toast);接下来,创建一个store文件夹,在该文件夹下创建index.js文件,用于定义Vuex的模块、状态和操作。importVuefrom
SCALA学习手册.pdf(JasonSwartz)
zxfxghfd
scala 学习 pdf
书:python33com(<----web)Scala概述:“Scala是‘可扩展语言’(SCAlableLanguage)的缩写,于2003年创建,为JVM平台上的函数式编程以及面向对象编程提供一个高性能开发环境。”值与变量:“值(val)是不可变、有类型的存储单元;变量(var)是可变、有类型的存储单元。”数据类型与转换:“Scala支持多种数据类型,包括Byte、Short、Int、Lon
10款免费开源的CMS建站系统,拿去接活吧!
兴风键盘侠
建站知识 php 前端 后端 开发语言
以下是10款轻量级免费开源CMS建站系统,支持独立建站私有化部署,并标注是否支持商用,拿去接私活吧:1.WordPress简介:WordPress是开源CMS。支持商用:✅可商用(GPLv2.0许可证)。特点:插件和主题生态。对SEO友好,适合博客、企业网站。2.DedeCMS(织梦CMS)简介:国内流行的内容管理系统。支持商用:⚠️限个人非盈利商用。特点:老牌CMS,丰富的模板资源。适合门户网站
深入了解WAF防火墙及其在中国的发展现状
兴风键盘侠
安全防护 网络 系统安全 安全
随着网络安全威胁的不断升级,网络应用防护成为企业信息安全的重要组成部分。WAF(WebApplicationFirewall,Web应用防火墙)正是应对这一挑战的关键工具之一。本文将详细介绍WAF防火墙的概念、功能、技术特点,以及其在中国市场的现状与未来发展趋势。一、什么是WAF防火墙?WAF(WebApplicationFirewall,Web应用防火墙)是一种专门保护Web应用的安全设备或服务
数字化转型的三个阶段:信息化、数字化、数智化
兴风键盘侠
计算机行业知识 大数据 创业创新
数字化转型(DigitalTransformation)是当前企业和社会发展的核心驱动力。它不仅是技术层面的变革,更是一种系统性、战略性的转型,涵盖了业务流程、管理模式以及企业文化等多个维度。数字化转型通常可以划分为三个阶段:信息化、数字化和数智化。本文将对这三个阶段进行详细剖析,帮助您理解每个阶段的特征、目标及实施要点。第一阶段:信息化(Informatization)定义与目标信息化是数字化转
深入了解WAF防火墙及其在中国的发展现状
兴风键盘侠
服务器管理 网络 系统安全 安全
随着网络安全威胁的不断升级,网络应用防护成为企业信息安全的重要组成部分。WAF(WebApplicationFirewall,Web应用防火墙)正是应对这一挑战的关键工具之一。本文将详细介绍WAF防火墙的概念、功能、技术特点,以及其在中国市场的现状与未来发展趋势。一、什么是WAF防火墙?WAF(WebApplicationFirewall,Web应用防火墙)是一种专门保护Web应用的安全设备或服务
CSS垂直居中的24种方法(最全最仔细)
兴风键盘侠
前端开发 css 前端
在CSS中,垂直居中的方法有很多,具体的实现方式取决于布局的上下文(如是否有父容器、是否是块级元素、是否固定高度等)。以下是最全的CSS垂直居中方法:1.使用line-height(仅用于单行文本)适用于单行文本,并且元素的高度已知。div{height:200px;line-height:200px;/*line-height设置为与容器高度相同*/text-align:center;}2.使用
Flutter中的高德地图适配鸿蒙
GeniuswongAir
harmonyos 华为
众所周知,虽然Flutter3.22版本编译到鸿蒙,已经没什么问题了。但是,还是特别多的好用的Flutter插件未适配鸿蒙。比如我们已经集成好的高德地图Flutter版的SDK,并没有适配鸿蒙。于是,只能自己动手术了。首先,Flutter版本的高德地图SDK如果你不想动它的话,直接去实现鸿蒙端的Plugin就可以了。第一步:创建AMapFlutterMapPlugin,注意名字什么的,和高德官方的
JAVA-Exploit编写(6)--http-request库文件上传使用
XError_xiaoyu
网络安全学习 # 安全开发实战 java 安全开发 Exploit 网络安全
目录1.http-request简介2.依赖导入3.文件上传页面代码4.http-request文件上传简单使用5.请求https的网站解决SSL证书的问题5.1直接请求带https域名的网站5.2信任所有证书1.http-request简介http-request是一个库里面提供很多方法,使得很容易就可以构造http请求,相比于之前使用的标准库类等要简单使用很多,目前通过此库来编写EXP较多.2
vue3.0如何快速封装自定义指令!
web网站装修工
vue.js javascript 前端 node.js 前端框架 vue elementui
一、输入框自动获得焦点//定义自定义指令v-focusconstvFocus={//当被绑定的元素插入到DOM中时……mounted(el){//聚焦元素el.focus();}};全局注册指令app.directive('focus',vFocus);使用:二、只能输入数字constvOnlyNumber={mounted(el){//当元素挂载时设置事件监听器el.addEventListen
前端建议玩node???
web网站装修工
前端 javascript vue.js 前端框架 node.js 后端
想搞个小项目玩玩顺便挣点零花钱,那node是最简单和方便的。我就发现一个node+vue后台管理比较实用,可以直接那来用。直通车:vue+node源码https://gitee.com/MMinter/vue_node核心功能模块用户管理用户信息维护:管理员可以创建、更新和删除用户账户。用户状态控制:包括激活或禁用用户账户,确保安全性和合规性。角色管理角色创建与分配:根据业务需求创建不同的角色,并
都用vue3了,还这样用emit?
web网站装修工
javascript vue.js 前端 node.js vue
今天查验一位前端同事代码,发现他为了方便封装了一个通用输入框。但也发现了很严重问题!!!先看看他的封装:子组件:import{ref}from'vue'constname=ref('')constemits=defineEmits(['getName'])constnameBlur=()=>{emits('getName',name.value)}父页面:importInputComponents
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected] " //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多
‘ + comment[‘username‘] + ‘: