小弟刚学Ajax,帮我解决Ajax从java中返回数据报的错误哦!要求在login.jsp的div层吧输入的名字返回出来。那么LoginAction里面怎么写?给代码哦

极速开发 2009-04-30 12:34:20
我用的是SSH框架
login.jsp页面 :

<%@ page language="java" pageEncoding="gbk"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<script type="text/javascript">
var http_request = false;
var callback;
function send_request(url,callbackFunc) ////初始化、指定处理函数、发送请求的函数
{
callback=callbackFunc;

http_request = false;////定义XMLHttpRequest对象
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest)//如果当前浏览器支持XMLHttpRequest则,创建XMLHttpRequest对象
{//如果是Mozilla浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)//overrideMimeType是用来给返回的消息加header的 setRequestHeader是用来给发送的 消息加header的
{//设置 Mime级别
http_request.overrideMimeType('text/html');
}
}else if (window.ActiveXObject)////如果当前浏览器支持ActiveXObject则,创建
{//如果是IE浏览器
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e)
{
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e)
{

}
}
}else if(window.createRequest)
{//IceBrowser使用另外一个方法:window.createRequest()。
try{
http_request=window.createRequest();
}
catch(ew)
{

}
}

if (!http_request)
{//异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例!");
return false;
}
http_request.onreadystatechange = processRequest;//服务器完成后,客户端处理事件 onreadystatechange每个状态改变都会触发这个事件处理器
http_request.open("GET", url, true);//open(method, url, async, username, password) async 参数指示请求使用应该异步地执行。如果这个参数是 false,请求是同步的,后续对 send() 的调用将阻塞,直到响应完全接收。如果这个参数是 true 或省略,请求是异步的,且通常需要一个 onreadystatechange 事件句柄。
http_request.send(null);//send(body)如果通过调用 open() 指定的 HTTP 方法是 POST 或 PUT,body 参数指定了请求体,作为一个字符串或者 Document 对象。如果请求体不适必须的话,这个参数就为 null。对于任何其他方法,这个参数是不可用的,应该为 null(有些实现不允许省略该参数)。
}

//处理返回信息的函数----与Ajax初始化中的 http_request.onreadystatechange=processRequest;对应调用
function processRequest()
{
if (http_request.readyState == 4)// 判断对象状态-----如果请求完成
{////readyState请求状态,有5个可取值:0、未初始化,1、正在加载,2、已加载,3、交互中,4、完成
if (http_request.status == 200)////status服务器的HTTP状态码
{// 信息已经成功返回,开始处理信息
setTimeout( callback, 2 );//设置连接延时
}else
{//页面不正常
alert("您所请求的页面有异常。");
}
}
}

function loginCheck()
{
var username = document.getElementById("username").value;//获取用户名
var userpassword = document.getElementById("userpassword").value;//获取密码
var submitURL="../login.do?status=select&username="+username+"&userpassword="+userpassword;//将获得的值传入action中处理
send_request(submitURL,'showMessage()');
}

function showMessage()
{
var err = document.getElementById("errMsg");
if ( err != null )
{
err.innerHTML = http_request.responseText;//取得服务器的返回结果
//responseText服务器响应,表示为一个串,Ajax就是通过这两个东东来得到服务器的资料的,responseText最常用的就是返回一个HTML,然后innerHTML在某个DIV中,或返回一个文本,innerHTML在某个SPAN中!
//responseXML最常用就是返回XML然后解析为一个DOM对象,然后取得其中的数据!大概用在列表显示吧!举例如在业务逻辑那里生成一个List的USER列表,里面存取USER信息,然后在迭带List写成XML返回就可以了!
//statusText服务器的HTTP状态码相应的文本
err.style.display="block";
}
}
</script>
<body>
<html:form action="login?status=select">
<table align="center">
<tr>
<td colspan="2" align="center">登陆信息</td>
</tr>
<tr>
<td>用户名</td>
<td><input type="text" id="username" name="username" onBlur="loginCheck();"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" id="userpassword" name="userpassword" onBlur="loginCheck();"/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="提交"/>  <input type="reset" name="reset" value="取消"/>
<BR/><html:errors/> <div id="errMsg" class="errMessage" style="display:none"></div>
</td>
</tr>
</table>
</html:form>
</body>
</html>

Struts-config中 的配置是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="com.YaBao.struts.form.LoginForm" />

</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/login/login.jsp"
name="loginForm"
parameter="status"
path="/login"
scope="request"
type="com.YaBao.struts.action.LoginAction">
<forward name="success" path="/login/login.jsp" />
</action>

</action-mappings>

<!-- 加上controller就不用再配置action的type属性了/或者说type属性不用改为
type="org.springframework.web.struts.DelegatingActionProxy" -->
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>

<message-resources parameter="com.YaBao.struts.ApplicationResources" />

<!--配置一个插件去集成spring -->
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>

</struts-config>

LoginAction里面的代码是:

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.YaBao.struts.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.YaBao.Dao.YaBaoDAO;
import com.YaBao.struts.form.LoginForm;

import org.apache.log4j.*;
/**
* MyEclipse Struts
* Creation date: 04-27-2009
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login/login.jsp" parameter="status" scope="request" validate="true"
* @struts.action-forward name="success" path="/success.jsp"
*/
public class LoginAction extends DispatchAction {
/*
* Generated Methods
*/
public YaBaoDAO yabaoDAO;
public YaBaoDAO getYabaoDAO() {
return yabaoDAO;
}
public void setYabaoDAO(YaBaoDAO yabaoDAO) {
this.yabaoDAO = yabaoDAO;
}
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws IOException
* @throws IOException
*/
public ActionForward select(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException {
/*LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub

System.out.println(loginForm.getUsername());
System.out.println(loginForm.getUserpassword());

Logger logger=Logger.getLogger(LoginAction.class);
logger.debug("-----------这是一个debug-----------");
logger.info("-----------这是一个info-----------");
logger.warn("-----------这是一个warn-----------");
logger.error("-----------这是一个error-----------");
logger.fatal("-----------这是一个fatal-----------");

this.yabaoDAO.select();*/
String usernameString=request.getParameter("username");
String userpasswordString=request.getParameter("userpassword");

System.out.println(usernameString);
System.out.println(userpasswordString);

response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter();
out.println(usernameString);
out.println(userpasswordString);
return null;
//return mapping.findForward("success");
}

}

要求在login.jsp的div层<div id="errMsg" class="errMessage" style="display:none"></div>把输入的名字返回出来。那么LoginAction里面怎么写?给代码哦
...全文
433 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
街头小贩 2009-04-30
  • 打赏
  • 举报
回复
看到了!哪你现在什么情况
街头小贩 2009-04-30
  • 打赏
  • 举报
回复
callback呢?
极速开发 2009-04-30
  • 打赏
  • 举报
回复
报的是 行87 err.innerHTML = http_request.responseText;
未知的运行时错误
极速开发 2009-04-30
  • 打赏
  • 举报
回复
function send_request(url,callbackFunc) ////初始化、指定处理函数、发送请求的函数
{
callback=callbackFunc;
}

function loginCheck()
{
var username = document.getElementById("username").value;//获取用户名
var userpassword = document.getElementById("userpassword").value;//获取密码
var submitURL="../login.do?status=select&username="+username+"&userpassword="+userpassword;//将获得的值传入action中处理
send_request(submitURL,'showMessage()');
}

send_request()里面是callback
,也就是showMessage()方法啊

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧