2 ikarosu Ikarosu_ 于 2016.04.22 16:38 提问

Struts2 ajax问题 新手求教

实践了一下书上的 Ajax实例 没有得到应有的效果
index.jsp页面 得到name password的值

用XMLHttpRequest对象和Action交互
理论效果应该是页面的一部分进行更新 然而结果却返回了success页面

主要代码如下:
分别是 页面 拦截器 和Action的代码

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
    <title>Insert title here</title>
    <sx:head/>
    <script type="text/javascript">
        var XHR = false;
        function CreateXHR() {
            try {
                XHR = new ActiveXObject("msxml2.XMLHTTP");
            } catch (e1) {
                try {
                    XHR = new ActiveXObject("microsoft.XMLHTTP");
                } catch (e2) {
                    try {
                        XHR = new XMLHttpRequest();
                    } catch (e3) {
                        XHR = false;
                    }
                }
            }
        }

        function sendRequest() {
            CreateXHR();
            if (XHR) {
                var name = document.getElementById("name").value;
                var password = document.getElementById("password").value;
                var uri = "http://localhost:8080/StrutsDemo/login.action?name=" + name + "&password=" + password;
                XHR.open("GET", uri, true);
                alert(1);
                XHR.onreadystatechange = resultHander;
                alert(2);
                XHR.send(null);
                alert(3);
            }
        }
        function resultHander() {
            if (XHR.readyState == 4 && XHR.status == 200) {
                alert(4);
                alert(XHR.responseText);
                alert(5);
            }
        }
    </script>
</head>
<body>
<center>
    Name:<input type="text" id="name"/><br/>
    password:<input type="password" id="password"/><br/>
    <input type="button" value="ok" onclick="sendRequest();"/>
</center>
</body>
</html>
 <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
        "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>
    <package name="Struts_AJAX_DEMO" namespace="/" extends="struts-default">
        <action name="login" class="com.action.LoginAction">
            <result>/success.jsp</result>
        </action>
    </package>
</struts>
 package com.action;
import javax.servlet.http.HttpServletResponse;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.SystemMenuBar;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String execute() throws Exception{
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/xml;charset=UTF-8");
        response.setHeader("Cache-Control","no-cache");
        response.getWriter().println("success");

        if(name.equals("tom")&&password.equals("123"))
        {
            response.getWriter().println("welcome login!");
        }else{
            response.getWriter().println("error,palease input again!");
        }
        return SUCCESS;
    }
}

2个回答

javaiswhat
javaiswhat   2016.04.22 16:59

你这个是请求没有跳转呀,返回的success是 Action类pring出来的

Ikarosu_
Ikarosu_ action里面没有跳转么?这个基本上是抄上的代码 我不太懂 所以请教一下问题具体出在哪里 应该怎么改可以达到异步更新的效果
大约 2 年之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.23 09:31

struts2&&ajax问题
struts2 ajax表單提交問題
struts2&&ajax问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
简单的ajax与struts2实例
前言         对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是ajax与struts2结合而开发的实例。        在学习实例前,le
Struts2与ajax整合之缺点
之前有篇博客介绍了Struts2与ajax的整合,链接http://blog.csdn.net/hanxuemin12345/article/details/38782213 这里不再累述,看以上博客。     此篇博客想吐槽一下Struts2的缺点——错误处理做的不好,怎么做的不好,哪里做的不好,通过Struts2中Ajax的应用缺陷来介绍。    先提出它的缺点,后面再做出证明。
struts2 实现ajax传参
这篇文章为自我总结,恕不细讲。 前台jQuery部分 function useAjax(_type,_url,_dataType,_data,_async) { $.ajax( { type : _type, url :_url, dataType:_dataType, data:_data, async:_async,//此处是为了同步,默认
struts2+jquery ajax问题汇总与解决办法
struts+ajax
Struts2与JQurey ajax配合跨域请求
其中 dataType指定为jsonp,jsonp 指定为 callback(随意),然后看struts2的配置: <action name="getCounselorDetailByHxCode" class="xxx" method="getCounselorDetailByHxCode"> callback true 其中,这一条 cal
Jquery跨域调用struts2的Action返回json数据易出现的问题
必须有jsoncallback 1. $.getJSON("/queryName.action?jsoncallback=?",function(json){                  alert(" json="+ json);                  console.log( json);             }); 2.
给Ajax技术初学者的一些建议
Yu Sueng你好:我推荐你先看一下《Ajax实战》,然后再看看《征服Ajax——Dojo、Prototype、script.aculo.us框架解析与实例》。这两本书的内容我感觉都不错。Ajax的核心内容是XMLHttpRequest对象,只要掌握了这个对象的使用方法,就可以做一些简单的Ajax开发了。《Ajax实战》的内容非常丰富,不需要一次性全部看完,看到第3章,就可以开始看第二本书了
新手求教Javascript问题
第一个 第二个 第三个 var link=document.getElementsByTagName("a"); for(var i in link){ if(document.addEventListener){ link[i].addEventListener("click",function(e){alert(e.target.tagName.toLowerCase());}
C#写COM组件
求教求教求教求教求教求教求教
struts2 ajax json需用到的jar包
6个jar包,缺一不可。 commons-lang.jar; json-lib-2.3-jdk15.jar; struts2-json-plugin-2.2.3.jar; ezmorph-1.0.1.jar; commons-beanutils-1.9.2.jar; commons-collections-3.1.jar