jq下的ajax多种用法
由于个人喜好 在代码中我会将request写成req,response写成resp
- load(url,[data],[callback])
- $.ajax(url,[settings])
- $.get(url,[data],[callback],[type])
- $.getJSON(url,[data],[callback])
- $.getScript(url,[callback])
- $.post(url,[data],[fn],[type])
jq下的ajax大致就这些方式,看起来有点多,我会一个一个介绍大致的用法,当然我会先介绍一些常用的方法,不常用的我将放在后面介绍,有兴趣的可以往下翻翻看
$.ajax(url,[settings])
这个放在第一位讲因为他的功能很多,后面的那些都是简化后的功能,$.ajax能处理的东西比较多,也比较复杂些(相对于他的其他方法)
//首先最简单的一个请求 get 请求 ,url(调用servlet) success 已经请求成功的回调函数
$.ajax({
type:"GET",
url:"check.do?name=name",
success:function (data) {
alert(1);
}
});
上面是实现一个最简单的ajax请求
接下来来点理论知识
$.ajax的函数
- beforeSend 在请求之前调用,并且传入一个XMLHttpRequest作为参数。作为ajax的一个事件
- error 在请求出错时调用,传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
- success 在请求成功时调用,参数有一个data接收处理过后的数据
- dataFilter 给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数,并且必须返回新的数据(可能是处理过的)传递给success回调函数
- complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串
这些函数中常用的是success方法和error方法,success接收请求成功后的数据,用来自己做需求处理, error方法是处理错误(一般情况下其实使用$.post即可完成基本的ajax操作,不先介绍post是因为post不能处理error,所以拿比较全面的$.ajax出来先讲)
//这是setting比较多的请求
$.ajax({
type:"post",
url:"check.do",
cache:false,
async:true,
data:"name=Jhon&age=123",
dataType:"json",
processData: false,
success:function (data) {
alert(1);
},
error:function(e){
console.log(e)//请求失败是执行这里的函数
}
});
这里大致介绍下,具体使用情况还要靠你们自己亲身体验
- cache (默认: true,dataType为script和jsonp时默认为false) jQuery 1.2 新功能,设置为 false 将不缓存此页面
- async (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行
- data 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:[“bar1”, “bar2”]} 转换为 “&foo=bar1&foo=bar2”
- processData (默认: true) 默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 “application/x-www-form-urlencoded”。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false
- dataType预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
- xml 返回 XML 文档,可用 jQuery 处理
- html 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行
- script 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。’’‘注意:’’'在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
- json 返回 JSON 数据
- jsonp JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数
- text 返回纯文本字符串
其实需要了解的也就是这些东西了,如果想熟练掌握就多去实验实验就好了.
//不过需要掌握的就这几个就行了,其他的没记住也可以随时翻阅资料查看即可
$.ajax({
type:"post",
url:"check.do",
data:"name=Jhon&age=123",
dataType:"xml",
success:function (data) {
alert($(data).find("user").html());
},
error:function(e){
console.log(e)//请求失败是执行这里的函数
}
});
$.post(url,[data],[fn],[type])
post相对于ajax就简单许多,因为创建这个就是为了简化异步刷新的代码量,如果不考虑程序会有请求错误的话,建议优先使用这个,个人感觉很方便
//在不考虑发送数据以及接收数据的情况下一个简单的post可以这样写
$.post("check.do");
这样写即是向后台发送了请求 用[ ]括起来的都是可选项,所以只有url一个必选项这里简单介绍下吧
- data 请求时发送给服务器的数据,也必须是 key/value的形式
- fn 回调函数,参数可以有一个data作为接收服务器传回的参数
- type 指定服务器返回的是什么数据
这里讲一下 key/value形式的数据有哪些?
- 最简单的就像拼接在url后面数值 xxx=xxx&xxx=xxx;
- 第二就是json {xxx:xxx,xxxx:xxxx}
这个相对简单,我就举两个例子吧
json格式
//服务器响应 记得修改请求头为text/json
resp.setContentType("text/json;charset=utf-8");
req.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
Map<String,Integer> map = new HashMap<>();
map.put("name",123);
map.put("age",124);
Gson gson = new Gson();
String str = gson.toJson(map);//这里用了一个jar包转化json格式,大家可以自行创建json数据
out.println(str);
//指定接收数据为json
//使用json传值到服务器时 不需要用双引号包起来,只有特定为字符串的数据才需要用双引号
$.post("check.do",{name:123},function (data) {
alert(data.name); //得到的是123
},"json");
//xml的话 服务器方面
resp.setContentType("text/xml;charset=utf-8");
resp.getWriter().print("<users><user>123</user></users>");
//页面
$.post("check.do",{name:123},function (data) {
alert($(data).find("user").html());//得到123
},"xml");
文本格式我就不演示了,只需将请求头修改成text/html 然后写数据即可
以上就是post的使用