关于struts2中ajax标签的一点学习笔记
其实ajax的东西不是很熟悉,而且对于javascript这样零碎的语言实在是很抗拒。于是过去一直都逃避它,迫于项目的压力,不得已惟有硬碰硬了。为了快速上手,之前做了几个小实验,代码实在太多了。幸好struts2提供了一些ajax的简易实现。
跟网上所有的教程一样,先从最简单的开始吧~
在头结点加上<s:head theme="ajax"/>
然后
<s:url id="requesturl" value="/get.action"></s:url>
<s:div id="information" theme="ajax"></s:div>
<s:a targets="information" theme="ajax" href="%{requesturl}" mce_href="%{requesturl}">获取信息</s:a>
服务器端的代码我就不写了,大同小异。返回的可以是任何东西,各种表单、表格、图什么的,具体要看你请求的是什么。返回的资源会直接显示在information的div中。这里有个小问题要注意,requesturl中的value值必须是/*.action的形式,而不能是struts.xml中的对应的action名称。
关于其他的属性就不实验了。
接下来加上一点javascript的操作,用文本按钮操作返回资源的显示和隐藏。
于是很自然的想到这样写:
<mce:script type="text/javascript"><!--
function hide(var i){
document.getElementById(i).style.display="none";
}
// --></mce:script>
然后把div的id值传进去,完成!但是失败。。这个函数完全执行不了。
这个问题困扰了我很久,我尝试了各种各样的方法,最后发现,javascript的函数传值机制跟平时写的C++和JAVA是有区别的。
在上面的代码中只要改成function hide(i){...}就可以执行了。
为什么这样呢?
原来的代码大概类似于java中的String newcopy = prototype.clone();
该函数新申请了一个地址并接受了与该参数等值的值,因此getElementById()去了另外一个地址寻找节点,而那里没有我们要操作的节点,于是调用该函数的时候没反应。囧,知识还得系统的学才行,半桶水太危险了。
另外关于onclick中的函数调用也有一个容易疏忽的地方,比如有个<div id="a"></div>,传值的时候应该是hide('a')而不是hide(a),也是个困扰了我很久的低级问题。。
相关文档:
了解使用 ASP.NET AJAX 进行局部页面更新
简介
Microsoft的 ASP.NET 技术提供了一个面向对象、事件驱动的编程模型,并将其与已编译代码的优势结合起来。但其服务器端的处理模型仍存在技术本身所固有的几点不足:
进行页面更新需要往返服务器,因此需要页面刷新;
来回往返不会保留 Javascript 或其他客户端技术(如 Ad ......
//初始化对象并发出XMLHttpRequest请求
xmlHttp= false;
if (window.XMLHttpRequest)
{ //Mozilla等其他浏览器
xmlHttp= new XMLHttpRequest();
if (xmlHttp.overrideMimeType)
{
& ......
function saveObj(){
var userName = document.getElementById("userName").value;
checkUserName(userName);
}
//使用ajax实现页面无刷新功能;
var xmlHttpRequest;
function createXMLHttpRequest(){
if(windo ......
以后说明就写在这里了,该控件只当是练手 我把说明一起打包了 不过还是在这里而在贴出来 我有空的时候就会扩展其他功能了
高手就可以飘过了... 每次更新我都会把原来的控件一起打包 文件可能越来越大,呵呵 欢迎交流
Ax控件用于ajax请求
支持浏览器 火狐 IE 等...
控件参数
_Async 是否同步 true为异步 fals ......
<input type="button" onclick="ajaxTest()" value="AJAX测试">
<input type="button" onclick=" document.getElementById('weather').innerHTML='' " value="隐藏">
<mce:script type="text/javascript"><!--
// 1. 初始化 请求 对象
// Mozilla/Firefox 下的
//var xmlhttp = ne ......