AJAX +Struts

转载 2007年10月02日 15:22:00
1.最基本的使用方法
 
var XMLHttpReq = false;

function createXMLHttpRequest(){
    
try{
        XMLHttpReq 
= new ActiveXObject("Msxml2.XMLHTTP");
    }
catch(othermicrosoft){
        
try{
            XMLHttpReq 
= new ActiveXObject("Microsoft.XMLHTTP");
        }
catch(failed){
            XMLHttpReq 
= false;    
        }

    }

    
if (!XMLHttpReq && typeof XMLHttpRequest != 'undefined'{
          XMLHttpReq 
= new XMLHttpRequest();
    }

}


function sendRequest(url,memVal){
    createXMLHttpRequest();
    XMLHttpReq.open(
"GET",url,true);
    members 
= memVal;
    XMLHttpReq.onreadystatechange 
= processResponse; 
    XMLHttpReq.send(
null); 
}


//process return response message 
function processResponse(){
    
if(XMLHttpReq.readyState == 4)    
        
if(XMLHttpReq.status == 200)
            updateMenu(members);
        }
else 
            
// Appear an exception in your request page
            alert('Sonic In your Javascirpt code have big Error, you are a ugly pig -_-! ');
        }

    }

}


2. 在后台放回Text 或者 XML
如果在struts的Aciton方法中,用response.getWriter().write(text);即可将数据返回
text: response.setContentType("text/html");
xml 则: response.setContentType("text/xml");
同时,在action中要返回一个null 的actionforward。
下面是一段JS获取XML的脚本

function parseMessage()
 {
     
var xmlDoc=xmlHttp.responseXML.documentElement;
     
var xSel=xmlDoc.getElementsByTagName('select');
     
var select_root=document.getElementById('b87_storage_name');

     
for(var i=0;i<xSel.length;i++)
     {
         
//取得XML中节点值
         var xValue=xSel[i].childNodes[0].firstChild.nodeValue;
         
//赋给INPUT
         select_root.value=xValue;
     }
 }

服务端:

response.setContentType("text/xml");
response.setHeader(
"Charset","GBK");
String xml_start
="<selects>";
String xml_end
="</selects>";
//如果亚显示中文就必须这样设置
String xml 
= ".<?xml version=/"1.0/" encoding=/"GBK/"?>..............";

response.getWriter().write(xml);

3.GBK中文问题
             比较麻烦,见我另外一篇文章.或者beansoft写的        

4.其他一些小结,有些是网上摘录的.
1.CACHE
如果使用xmlhttp控件,在发起http请求的时候IE会包办cache策略,很多时候更新了数据却无法获得更新后的数据。一开始试图用传统方式在URL后面加随机数来强制更新,但是IE仍然距不发出新的请求。
一个解决方法是在后台写expires: 0或者其他的禁止前台cache的头,但是这样在数据没有更新的时候又会带来不必要的服务器压力、响应延迟和带宽浪费。
一个稍微好一点的解决方法是,前台在提交数据以后,需要强制更新数据的时候:

xmlhttp.setRequestHeader("If-Modified-Since","0");

2 系统错误: -1072896748。
用xmlhttp接收到数据的时候经常是用xmldom.loadXML(xmlhttp.responseXML.xml)来判断返回的数据的正确性,但是如果后台送过来不正确的xml的时候有时回触发-1072896748系统错误。这是因为xmlhttp.responseXML已经没有解析到东西了,我们还试图访问它的xml属性而触发的。
解决的方法是在使用responseXML.xml 或者 responseText的时候要做try/catch:
try{var tmp = xmlhttp.responseXML.xml}catch(ex){err=true;}
有些人喜欢catch的时候判断 exception.description=="系统错误: -1072896748。" , 如果客户端不是简体中文版的系统的时候就判断不到了。其实这个地方只要有异常,都必须走异常处理流程了,不用区分的那么仔细。 

相关文章推荐

Struts2的Ajax的学习

今天学习了Struts2的Ajax,当然看的也是别人的教程,看后感觉Struts的Ajax的封装后的标签使用十分好用,我简单的理一下学习的顺序: 一、首先Struts2的Ajax引用了Dojo和DW...

struts2之ajax请求返回自定义错误信息

struts2的异常处理机制是在发生异常时,跳转到我们指定的页面,并显示出相应的异常信息,如 actionErr...等信息 但如果是异步请求出错,这种方         式就蛋疼了。默认的处理机制是...

Struts2+ajax+json整合简介

一、要准备好jar包,不要小看这一步,万事开头难。。总结起来有以下两种搭配。 1.   xwork-core-2.1.6.jar和struts2-json-plugin-2.1.8.jar。如果你...

jquery+Ajax框架处理,XML,JSON,GSON对象传送!详解+案列!struts2的支持

jquery+Ajax框架处理,XML,JSON,GSON对象传送!详解+案列!struts2的支持

Struts2常用的Ajax标签

Struts2常用的Ajax标签 Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。 1,div标签 ...

js获取URL参数以及Struts2与ajax json的交互

json_demo.jsp页面(该页面引用了jquery文件,我用的版本是jquery-1.8.2.js,如果使用版本不同,请自行修改): 01 <%@ pag...

在Struts 2中使用JSON Ajax支持

JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射到任何视图资源。因为JSON插件会负责将Action里的...

AJAX+Struts2实例:实现注册重名检验

注册重名检验

jquery ajax无刷新请求Struts2验证用户名密码数据库是否存在

通过ajax请求验证后台数据是否存在. 首先导入struts2的核心包。 后台Action代码 import com.opensymphony.xwork2.ActionSuppor...

struts2:后台验证表单(用Ajax局部验证)

在工作中,很多时候都会接触表单,自然就会有表单的验证。有前台验证、后台验证,如果允许,建立前后台都验证,如果选一个的话,建议后台验证,前台验证很容易被越过的。以前对表单的验证,是将整个表单提交到后台,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)