dataType:接收的数据格式,可以指定为'html'、'xml'、'json'、'text'等,缺省情况下根据响应的Content-Type确定。
var configObj = { method //数据的提交方式:get和post url //数据的提交路劲 async //是否支持异步刷新,默认是true data //需要提交的数据 dataType //服务器返回数据的类型,例如xml,String,Json等 success //请求成功后的回调函数 error //请求失败后的回调函数 } $.ajax(configObj);//通过$.ajax函数进行调用。下面的例子发送一个GET请求,并返回一个JSON格式的数据:
var jqxhr = $.ajax('/api/categories', { dataType: 'json' });
看一个进行异步删除的例子:
$.ajax({ type : "POST", //提交方式 url : "${pageContext.request.contextPath}/org/doDelete.action",//路径 data : { "org.id" : "${org.id}" },//数据,这里使用的是Json格式进行传输 success : function(result) {//返回数据根据结果进行相应的处理 if ( result.success ) { $("#tipMsg").text("删除数据成功"); tree.deleteItem("${org.id}", true); } else { $("#tipMsg").text("删除数据失败"); } } });
function ajaxLog(s) { var txt = $('#test-response-text'); txt.val(txt.val() + '\n' + s); } $('#test-response-text').val(''); var jqxhr = $.ajax('/api/categories', { dataType: 'json' }).done(function (data) { ajaxLog('成功, 收到的数据: ' + JSON.stringify(data)); }).fail(function (xhr, status) { ajaxLog('失败: ' + xhr.status + ', 原因: ' + status); }).always(function () { ajaxLog('请求完成: 无论成功或失败都会调用'); });
<h2>jQuery and AJAX is FUN!!!</h2> <p id="p1">This is some text in a paragraph.</p>下面的例子会把文件 "demo_test.txt" 的内容加载到指定的 <div> 元素中:
$("button").click(function(){ $("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){ if(statusTxt=="success") alert("外部内容加载成功!"); if(statusTxt=="error") alert("Error: "+xhr.status+": "+xhr.statusText); }); });
var jqxhr = $.get('/path/to/resource', { name: 'kang chen', check: 1 });
3、jQuery $.post() 方法
$.post,这个函数其实就是对$.ajax进行了更进一步的封装,减少了参数,简化了操作,但是运用的范围更小了。$.post简化了数据提交方式,只能采用POST方式提交。只能是异步访问服务器,不能同步访问,不能进行错误处理。在满足这些情况下,我们可以使用这个函数来方便我们的编程,它的主要几个参数,像method,async等进行了默认设置,我们不可以改变的。
$.post() 方法通过 HTTP POST 请求从服务器上请求数据。
语法:post()和get()类似,但是传入的第二个参数默认被序列化为application/x-www-form-urlencoded: var jqxhr = $.post('/path/to/resource', { name: 'kang chen', check: 1 });
var jqxhr = $.getJSON('/path/to/resource', { name: 'Bob Lee', check: 1 }).done(function (data) { // data已经被解析为JSON对象了 });
三、数据封装
这里还有一个问题,比较麻烦,就是如果页面数据量比较大,该怎么办呢?在常规表单的处理中,我们使用框架Struts2可以通过域驱动模式进行自动获取封装,那么通过ajax,如何进行封装呢?这里JQuery有一个插件,Jquery Form,通过引入此js文件,我们可以模仿表单Form来支持Struts2的域驱动模式,进行自动数据的封装。用法和$.ajax类似,看一下实际的例子,这里写一个保存用户的前台代码:
$(function(){ var options = { beforeSubmit : function() {//处理以前需要做的功能 $("tipMsg").text("数据正在保存,请稍候..."); $("#insertBtn").attr("disabled", true); }, success : function(result) {//返回成功以后需要的回调函数 if ( result.success ) { $("#tipMsg").text("机构保存成功"); //这里是对应的一棵树,后边会介绍到, // 控制树形组件,增加新的节点 var tree = window.parent.treeFrame.tree; tree.insertNewChild("${org.id}", result.id, result.name); } else { $("#tipMsg").text("机构保存失败"); } // 启用保存按钮 $("#insertBtn").attr("disabled", false); }, clearForm : true }; $('#orgForm').ajaxForm(options); //通过Jquery.Form中的ajaxForm方法进行提交 });