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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!