项目中想用ajax,于是在网上扒了n多资料,犯了n多错误,从今天上班到现在一直在处理这个问题,终于还是把它解决了。
当我看到页面的ajax显示后,我兴奋异常,为了记录自己学习的ajax历程,也为了让更多的人少走弯路,特写此一文以记之!
废话不说了,为了更好的理解,我重做了一个小的项目,以加深印象。现在就以这个小项目开始我们的ajax之旅。
第一步:创建 名为"ajax" 的 Java Web项目。
第二步:加入struts2的jar包,这里需要四个包 freemarker.jar ognl.jar struts2-core.jar commons-fileupload.jar commons-io.jar xwork-core-2.1.6.jar(这个包加上版本号,是因为下文要提到它),这六个包是struts必须依赖的jar包,什么好说的。
第三步:修改 web.xml 加入 struts的过滤器,代码如下:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
&nbs ......
问题:
当用户点击删除按钮时,程序调用Response.write("<script>alert('是否继续')</script>")是页面会弹出错误:
Sys.WebForms.PageRequestManagerParserErrorException:The
message received from the server count not be parsed.Common causes for
this error are when the response is modified by calls to
response.Write(),response filters,HttpModules,or server trace is
enabled.
Details:Error parsing near '<script language=javascript'.
原因:
由于页面中加入了UpdatePanel,而且删除按钮在UpdatePanel里面。
当用户点击删除按钮时,ajax1.0不支持Response.write里面调用javascript。
解决办法:
在UpdatePanel的属性中添加PostBackTrigger,ControlID为该删除按钮,如下:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
......
Web项目中总是会用到异步操作,现在的异步操作可以用各种各样的控件来实现,但实现原理还是一样的,本人更喜欢使用最原始的Ajax操作去实现异步处理,本文仅献给那些喜欢实现Ajax和项目中要用到Ajax的朋友。
Ajax实现原理就是客户端通过javascript操作调用服务器端操作,并处理服务器返回结果,同时保证了用户操作的页面不出现刷新操作。
下面的实现是一个实现了省市区县级联操作的实例:
所在城市:<select name="province" class="input font12" onchange="refreshList(this.options[this.selectedIndex].value,'city');">
<%
Sql = "select * from s_province t order by provcode asc"
Set Rs = Conn.execute(Sql)
Dim i,provcode,citycode,areacode
i=1
Do while not Rs.eof
provcode = Rs("provcode")
If i=1 Then
Response.write "<option value="""&Rs("provcode")&""" selected>"&Rs("provname")&"</option>"
Else
Response.write "<option v ......
ajax的功能主要是应用在js上,ajax对asp没什么要求,asp只负责在后台显示及操作服务端的数据。
可以像下面这样思考:
1.写表单第一项(如用户名)
2.onblur事件(失去焦点)发生时开始验证,onblur="checkusername()"
3.js发一个请求给第一个asp(假定为ajaxusername.asp)如果从数据库中找到了这个用户,给出1(ajaxusername.asp所
有内容就是一个1)如
<%
if(user.exist())response.write "1"
%>
4.js收到,会自动执行checkuser()函数。
checkuser把用户名一行底色改变,并显示“用户己存在”
asp部分你就自己写了。下面给出一些js代码。
<script>
/*以下函数一般不需要改变*/
var Ajax;
function CreateAjax(){
if (window.XMLHttpRequest){
Ajax = new XMLHttpRequest();
}else if (window.ActiveXObject){
Ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function SendData(url_,sendtext_){
Ajax.open("POST",url_,true);
Ajax.onreadystatechange = checkuser;
Ajax.send(sendtext_);
}
function CheckAjaxStatus(Ajax_){
if(Ajax_.readyState == 4)
if(Ajax_.status == 200)
retur ......
Ajax的全称是:AsynchronousJavaScript+XML
2.Ajax的定义:
Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。
3.Ajax包括:
XHTML和CSS
使用文档对象模型(DocumentObjectModel)作动态显示和交互
使用XML和XSLT做数据交互和操作
使用XMLHttpRequest进行异步数据接收
使用JavaScript将它们绑定在一起
Web开发领域的最新时髦术语其实质是“旧貌换新颜”。
Ajax(AsynchronousJavaScriptandXML)是结合了Java技术、XML以及JavaScript等编程技术,可以让开发人员构建基
于Java技术的Web应用,并打破了使用页面重载的惯例。
Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就
可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。
异步JavaScript和XML(AJAX)不是什么新技术,而是指这样一种方法:使用几种现有技术——包括级联样式表(CSS)
、JavaScript、XHTML、XML和可扩展样式语言转换(XSLT),开发外观及操作类似桌面软件的Web应用软件。实现Ajax
的所有 ......
在最近开始将AJAX技术加入到日常的开发工作中。我在最近写了个AJAX的无刷新登陆且动态添加服务器控件的工作,我将此功能告诉大家希望对大家的工作有所帮助。如果大家有更好的方法且愿意在此留言让我也可以分享到你的成果。
首先在页面中的HTML标记中加入控件UpdatePanel和两个Textbox一个Button:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers=false UpdateMode=Conditional>
<ContentTemplate>
用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
密码:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="btnOK" runat ......
在最近开始将AJAX技术加入到日常的开发工作中。我在最近写了个AJAX的无刷新登陆且动态添加服务器控件的工作,我将此功能告诉大家希望对大家的工作有所帮助。如果大家有更好的方法且愿意在此留言让我也可以分享到你的成果。
首先在页面中的HTML标记中加入控件UpdatePanel和两个Textbox一个Button:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers=false UpdateMode=Conditional>
<ContentTemplate>
用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
密码:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="btnOK" runat ......