如果客户端使用jquery.ajax,TYPE为POST,或者使用jquery.post,那么服务端接收的语句应该是context.Request.Form[" "],不能使用context.Request.QueryString[" "]
客户端jquery.post如果你设置了请求的格式为"json",此时服务器端你没有设置Response回来的ContentType 为:Response.ContentType = "application/json"; 那么你将无法捕捉到返回的数据。
注意一下,alert(data.result); 由于设置了Accept报头为“json”,这里返回的data就是一个对象,并不需要用eval()来转换为对象。返回的data可以是一个对象,也可以是一个数组,主要看服务器端返回的是什么。
对jquery.get乱码的处理:客户端encodeURI(" ") 服务器端context.Server.UrlDecode(context.Request.QueryString[" "])
而jquery.post的无需处理乱码
用法概要:
1.load( url, [data], [callback] ); 可以轻松载入静态页面内容到指定jQuery对象。
url (String) 请求的HTML页的URL地址
data (Map)(可选参数) 发送至服务器的 key/value 数据
callback (Callback) (可选参数) 请求完成时(不需要是success的)的回调函数
load()方法$('#ajax-div').load('data.html');
这样,data.html的内容将被载入到ID为ajax-div的DOM对象之内。
你甚至可以通过制定ID来实现载入部分内容的Ajax操作,如: $('#ajax-div').load('data.html#my-section');
2.get( url, [data], [callback] ) ; url (String) 发送请求的URL地址. data (Map)(可选参数) 要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中 callback (Callback) (可选参数) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法) $.get('login.php', {
id : 'Robin',
password: '123456',
gate : 'index'
}, function(data, status) {
//data为返回对象,status为请求的状态
alert(data);
//此时假设服务器脚本会返回一段文字“你好,Robin!”,那么浏览器就会弹出对话框显示该段文字
alert(status);
//结果为success, error等等,但这里是成功时才能运行的函数
});
3.post( url, [data], [callback], [type] ) ; url (String) 发送请求的URL地址. data (Map)(可选参数) 要发送给服务器的数据,以 Key/value 的键值对形式表示 callback (Callback) (可选参数) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法) type (String) (可选参数) 请求数据的类型,xml,text,json等 $.post('regsiter.php', {
id:'Robin',
password: '123456',
type:'user'
},function(data, status) {
alert(data);
}, "json");
-
4.getScript( url, [callback] ) ;可以远程载入JavaScript脚本并且执行。这个函数可以跨域载入JS文件。它可以很大程度的缩减页面初次载入的代码量,因为你可以根据用户的交互来载入相应的JS文件,而不必在页面初始化的时候全部载入。
url (String) 待载入 JS 文件地址
callback (Function) (可选) 成功载入后回调函数
$.getScript('ajaxEvent.js', function() {
alert("Scripts Loaded!");
//载入ajaxEvent.js,并且在成功载入后显示对话框提示。
}); 5.getJSON(url,[data],[callback]);数据传输格式,可以通过把请求url写 成"myurl?callback=X"这种格式,让程序执行回调函数X。
-
url (String) 发送请求地址
-
data (Map) (可选) 待发送 Key/value 参数
-
callback (Function) (可选) 载入成功时回调函数。
-
-
$.getJSON('feed.php',{
request: images,
id: 001,
size: large
}, function(json) {
alert(json.images[0].link);
//此处json就是远程传回的json对象,假设其格式如下:
//{'images' : [
// {link: images/001.jpg, x :100, y : 100},
// {link: images/002.jpg, x : 200, y 200:}
//]};
}
);
6.ajax()来调用一个XML文档:
$.ajax({
url: 'doc.xml',
type: 'GET',
dataType: 'xml',
timeout: 1000,
error: function(){
alert('Error loading XML document');
},
success: function(xml){
alert(xml);
//此处xml就是XML的jQuery对象了,你可以用find()、next()或XPath等方法在里面寻找节点,和用jQuery操作HTML对象没有区别
}
});
7.下面是jQuery提供的所有AJAX全局函数(按照触发顺序排列如下):
-
ajaxStart : (全局事件) 开始新的Ajax请求,并且此时没有其他ajax请求正在进行
beforeSend : (局部事件) 当一个Ajax请求开始时触发。如果需要,你可以在这里设置XMLHttpRequest对象
ajaxSend : (全局事件) 请求开始前触发的全局事件
success : (局部事件) 请求成功时触发。即服务器没有返回错误,返回的数据也没有错误
ajaxSuccess : 全局事件全局的请求成功
error : (局部事件) 仅当发生错误时触发。你无法同时执行success和error两个回调函数
ajaxError : 全局事件全局的发生错误时触发
complete : (局部事件) 不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件
ajaxComplete : 全局事件全局的请求完成时触发
ajaxStop : (全局事件) 当没有Ajax正在进行中的时候,触发
8.对某个对象进行全局事件监听,那么全局中的AJAX动作,都会对其产生影响。比如,当页面在进行AJAX操作时,ID为“loading"的DIV就显示出来:
$("#loading").ajaxStart(function(){
$(this).show();
});
9.在一个对象里显示全局的AJAX情况:$("#msg").beforeSend(function(e,xhr,o) {
$(this).html("正在请求"+o.url);
}).ajaxSuccess(function(e,xhr,o) {
$(this).html(o.url+"请求成功");
}).ajaxError(function(e,xhr,o) {
$(this).html(o.url+"请求失败");
});10.在单个AJAX请求时,你可以将global的值设为false,以将此请求独立于AJAX的全局事件。$.ajax({
url: "request.php",
global: false,
// 禁用全局Ajax事件.
});11.如果你想为全局AJAX设置参数,你会用上ajaxSetup()函数。例如,将所有AJAX请求都传递到request.php,;禁用全局方法;强制用POST方法传递:$.ajaxSetup({
url: "request.php",
global: false,
type: "POST"
});12.AJAX从页面获取相应的值(1).val()函数$("input[name='info']:text").val();
//返回名字为info的文本框的值
$("input[name='pass']:password").val();
//返回名字为pass的密码框的值
$("input[name='save']:radio").val();
//返回名字为save的单选项的值
//以此类推(2).serialize() serialize函数可以帮你把表单对象的所有值都转换为字符串序列。如果你要写GET格式的请求,这个就非常方便了。(3).serializeArray() 和serialize()类似,只不过它返回的是JSON对象。
1 交互是异步的
2 在客户端用JavaScript接收、发送、展示数据
3 用XML作为传输介质
Ajax应该用来干什么?
1 二级或N级联动列表
如果下一级列表数据依赖于上一级选择,并且数据是动态不定的,那么这种情况用Ajax实现就会很自然。
2 用户界面输入辅助
你在Google中输入一个或几个字,就会出现一个下拉列表供你选择比较热门的相关词语。
3 数据校验
当焦点离开某控件时判断控件中数据是否合法。