以前在一些网站自学ajax时的时候,总是不明白,凭什么我ajax请求后,就能收到消息?在没有ajax之前,页面的刷新都是全部更新的,而有了ajax后,我们可以做到局部更新而不必页面的重新请求,这种轻量级的更新方式带来的好处是显而易见的:对网页浏览者来讲快捷方便,节约时间;对开发者来讲,维护起来更轻松,不必牵一发而动全身的针对整个页面;对服务器来讲,ajax请求的带来的压力会远远小于整个页面刷新给服务器的负荷。好了,那么ajax到底是怎么请求的,类似与w3c和菜鸟等自学网站都没有真正的实例,只是展示可以ajax请求,后台代码没有,给初学者带来了很大的困难。
以一个用asp.net页面为例:
public static string SayHello()
{
return "Hello Ajax!";
}
$(function() { $("#btnOK").click(function() { $.ajax({ //要用post方式 type: "Post", //方法所在页面和方法名 url: "data.aspx/SayHello", contentType: "application/json; charset=utf-8", dataType: "json", //非必要
data: $('#form1').serialize(),success: function(data) { //返回的数据用data.d获取内容 alert(data.d); }, error: function(err) { alert(err); } }); //禁用按钮的提交 return false; }); });
url: "data.aspx/SayHello", contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { //返回的数据用data.d获取内容 alert(data.d); }, error: function(err) { alert(err); } }); //禁用按钮的提交 return false; }); });
这样子我们可以很清楚的看到ajax的流程:点击(click)事件触发了JavaScript,然后启用ajax,ajax根据URL去找后台的处理的方法,也就是sayhello(),把sayhello()方法的执行结果返回到页面。这个请求方式是不是和整个页面刷新同根同源呢?只要理解了其中一个,另一个就很好理解。
对于传送到后台 的数据,如果用post方法,则可以把一个form用JavaScript的方法序列化后传送。
格式:var data = $("form").serialize();
功能:将表单内容序列化成一个字符串。
把data放到参数里面即可
再说说URL吧,统一资源定位符,在学计算机网络的时候不能理解,现在就醍醐灌顶了:所有的资源在服务器里面,你看到的网页给你很多个选择,你根据自己的需求选择好了,提交,然后就可以到服务器里面找了。比如说服务器有语,数,外三个资源,在页面上就有语,数,外三个资源对应的请求路径,你点击语文的下载肯定会下载到语文的资源,不会是其他的(下载在就是一个简单select SQL语句)。
那么,很多网站在注册时不允许用户名重复,那么ajax请求在后台的执行代码(抛开编程语言,仅说SQL语句)是什么样子的呢?不会的自己想想咯,很简单的。