{ (window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } (window.ActiveXObject) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("msxml2.XMLHTTP"); } catch (ex) { } } } if (!xmlhttp) { alert("创建xmlhttp对象异常"); return false; } // xmlhttp.open("POST", "GetDate.ashx?nd=" + new Date(), false); //向服务器某个页面发出请求 xmlhttp.open("GET", "URL“, false); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { xxxxx = xmlhttp.responseText;//在此处我们可以将我们传递的参数返回给我们的html标签,或者其他变量处理问题 } { alert("AJAX服务器返回错误"); } } } xmlhttp.send();//开始发送请求 }
这只是前台的代码,就这些代码就已经足够了,实现了局部刷新页面的功能,剩下的后台代码是根据项目的不同而定,我在这里不必引入了。
大家看到这些代码感觉怎么样,对于刚学习javascript或者ajax的同学,要想记住这些代码,真的是很难啊,还有怎么去理解这些东西呢,我上面基本都有注释,大家一般可以理解。但是如果每个页面都需要局部刷新的话,这样就会感觉每个页面都要写这样的代码是不是很麻烦啊,jQuery帮助我们完成了很多东西,这样可以减轻我们开发项目的难度,以下是使用jQuery的代码:
$.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } });
另一种方式
$.post("test.php", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
是不是很简单啊,在这里我们这是调用他写好的函数,我们就可以实现我们的无刷新代码了,现在感觉是不是无刷新页面是不是很简单了,但是我们这只是传递个小数据而已,如果从数据库中提取数据时就会很麻烦的,以下引入我的部分代码,让大家思考一下
以下是我实现无刷新评论并显示的前台和后台代码:
$(function () { $( () { ).val(); $.post(:comment}, function (data, status) { ) { alert(); return; } ) { ); $().append(newComment); alert(); } else { alert(); } }); }); }); DeleteMethod OldValuesParameterFormatString TypeName="ajax学习.DataSetCommentTableAdapters.T_CommentTableAdapter" UpdateMethod评论日期:,IP:,内容: value
后台代码(AjaxComment.ashx)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using ajax学习.DataSetCommentTableAdapters; using System.Web.Services; namespace ajax学习.无刷新评论 { AjaxComment 的摘要说明 /// </summary> [WebService(Namespace = )] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class AjaxComment : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = ; ]; new T_CommentTableAdapter().Insert(context.Request.UserHostAddress,msg,DateTime.Now.ToString());//使用的是强类型DataSet context.Response.Write(); } public bool IsReusable { get { return false; } } } }