JQuery也有对AJAX的支持,使得其对AJAX的操作简化了很多。
- 提交AJAX请求
参考 使用AJAX 通过无刷新验证账号是否存在 这个例子,服务端使用JSP进行验证,当用户输入abc的时候提示"已经存在"
完整的 $.ajax 参数 比较复杂,这里采用了常见的调用方式。
$.ajax采用参数集的方式 {param1,param2,param3} 不同的参数之间用,隔开$.ajax({ url: page, data:{"name":value}, success: function(result){ $("#checkResult").html(result); } });
第一个参数 url:page 表示访问的是page页面
第二个参数 data:{name:value} 表示提交的参数
第三个参数 success: function(){} 表示服务器成功返回后对应的响应函数
<script src="jquery.min.js"></script> <div id="checkResult"></div> 输入账号 :<input id="name" type="text"> <script> $(function(){ $("#name").keyup(function(){ var page = "checkName.jsp"; var value = $(this).val(); $.ajax({ url: page, data:{"name":value}, success: function(result){ $("#checkResult").html(result); } }); }); }); </script>
- 使用get方式提交ajax
$.get 是 $.ajax的简化版,专门用于发送GET请求
$.get 使用3个参数$.get( page, {"name":value}, function(result){ $("#checkResult").html(result); } );
第一个参数: page 访问的页面
第二个参数: {name:value} 提交的数据
第三个参数: function(){} 响应函数
只有第一个参数是必须的,其他参数都是可选
<script src="jquery.min.js"></script> <div id="checkResult"></div> 输入账号 :<input id="name" type="text"> <script> $(function(){ $("#name").keyup(function(){ var page = "checkName.jsp"; var value = $(this).val(); $.get( page, {"name":value}, function(result){ $("#checkResult").html(result); } ); }); }); </script>
- 使用post方式提交ajax
$.post 是 $.ajax的简化版,专门用于发送POST请求
$.post 使用3个参数$.post( page, {"name":value}, function(result){ $("#checkResult").html(result); } );
第一个参数: page 访问的页面
第二个参数: {name:value} 提交的数据
第三个参数: function(){} 响应函数
只有第一个参数是必须的,其他参数都是可选
<script src="jquery.min.js"></script> <div id="checkResult"></div> 输入账号 :<input id="name" type="text"> <script> $(function(){ $("#name").keyup(function(){ var page = "checkName.jsp"; var value = $(this).val(); $.post( page, {"name":value}, function(result){ $("#checkResult").html(result); } ); }); }); </script>
- 最简单的调用ajax的方式
load比起 $.get,$.post 就更简单了
$("#id").load(page,[data]);
id: 用于显示AJAX服务端文本的元素Id
page: 服务端页面
data: 提交的数据,可选。 在本例中,直接在page里加上了参数列表
<script src="jquery.min.js"></script> <div id="checkResult"></div> 输入账号 :<input id="name" type="text"> <script> $(function(){ $("#name").keyup(function(){ var value = $(this).val(); var page = "checkName.jsp?name="+value; $("#checkResult").load(page); }); }); </script>
- 格式化form下的输入数据
serialize(): 格式化form下的输入数据
有的时候form下的输入内容比较多,一个一个的取比较麻烦,就可以使用serialize() 把输入数据格式化成字符串
1.<script src="jquery.min.js"></script> <div id="checkResult"></div> <div id="data"></div> <a href="checkName.jsp">checkName.jsp</a> <form id="form"> 输入账号 :<input id="name" type="text" name="name"> <br> 输入年龄 :<input id="age" type="text" name="age"> <br> 输入手机号码 :<input id="mobile" type="text" name="mobile"> <br> </form> <script> $(function(){ $("input").keyup(function(){ var data = $("#form").serialize(); var url = "checkName.jsp"; var link = url+"?"+ data; $("a").html(link); $("a").attr("href",link); }); }); </script>
// 加载http://localhost/index.php的html内容来替换当前文档的每一个div元素
// jQuery会过滤掉该文档中的DOCTYPE以及html、head、body标签后再进行替换(以免与当前文档的标签起冲突)
$("div").load("http://localhost/index.php");
// 由于当前文档没有p元素,因此它什么也不做,既不会发送Ajax请求,也不会执行回调函数(如果有回调函数的话)
$("p").load("http://localhost/index.php");
2.
// 加载http://localhost/index.php?id=2的html内容
// 只使用其中id为site-title的元素来替换所有div元素
$("div").load("http://localhost/index.php?id=2 #site-title");
3.
// 请分别执行以下三个加载方法
// 也可将URL直接写为:"action.php?id=5&username=CodePlayer&age=15"
$("div").load("action.php?id=5", "username=CodePlayer&age=15");
// 由于数据是对象形式,因此自动转为POST方式
$("div").load("action.php?id=5", { username: "CodePlayer", age: 15 });
// 由于数据是对象形式,因此自动转为POST方式
// 注意: new String("username=CodePlayer&age=15") 也是一个Object对象,会使用POST方式
$("div").load("action.php?id=5", { username: "CodePlayer", age: 15 }, function(responseText, textStatus, jqXHR){ // responseText 是响应(返回)的原始文本数据 // textStatus 可能是 "success"、 "notmodified"、 "error"、 "timeout"、 "abort"或"parsererror"中的一个 // jqXHR 是经过jQuery封装的XMLHttpRequest对象(保留其本身的所有属性和方法) if(textStatus == "success" || textStatus == "notmodified"){ alert("加载成功!"); } });