Struts2中 如何应用草根ajax?

09-02-24 littlenewus
今天在用struts2 与Ajax结合的时候不能把数据取回到页面来了。。请大家帮帮忙:

html代码:

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>registor form</title>

<script language="javascript">

var request;

function checkUserName(){

var username = document.getElementById('userName').value;

var url = "checkUserName.action?username="+username;

if (window.XMLHttpRequest) {

request = new XMLHttpRequest();

   }else if (window.ActiveXObject) {

  request = new ActiveXObject("Microsoft.XMLHTTP");

   }

 if(request){

  request.open("GET",url, true);

  request.onreadystatechange = complete;

  request.send(null);

   }

}

function complete(){

  if (request.readyState == 4) {

  if (request.status == 200) {

alert("test1");

alert(resquest.responseText);

// document.getElementById().style.display = "true";

document.getElementById("message").innerHTML = resquest.responseText;

  }

  }

}

</script>

</head>

<body>

<form action="registor.action" method="get">

<center>

<h1>

Registor Here.

</h1>

name:<input type="text" id="userName" name="userName" value="sun" />

<input type="button" onclick="return checkUserName()" value="check it useable"/>

<br>

pswd:<input type="text" name="password" value="" />

<br><input type="submit" value="submit" />

</center>

</form>

<center>

<div id="result" style="display: block">

<input type="text" id="message" value="" />

</div>

</center>

</body>

</html>

后台struts的代码:

主要是execute()方法的代码:

public String execute() {

ApplicationContext ctx = new ClassPathXmlApplicationContext(

"applicationContext.xml");

UsersService userService = (UsersService) ctx.getBean("UsersService");

result = userService.checkUserName(username);

HttpServletResponse response = (HttpServletResponse) ActionContext

.getContext().get(

org.apache.struts2.StrutsStatics.HTTP_RESPONSE);

PrintWriter pw;

try {

pw = response.getWriter();

pw.write("test");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}//获取out输出对象

return null;

}

其他配置文件都没有 action也有反映 但是在页面上不知道怎么把数据拿回来显示。

[该贴被admin于2009-02-25 08:29修改过]

         

freebox
2009-02-24 22:21
没配置的话,返回null时默认是渲染当前页吧?

您可以尝试构造自己的result类型,但我推荐您使用google的一个开源工具,我们曾经用过,方便实用。

地址:http://code.google.com/p/jsonplugin/

littlenewus
2009-02-24 23:52
嗯 了解过这个json插件。。。result是一个boolean型的数据类型。。构造自己的result类型是什么意思?

freebox
2009-02-25 01:17
我的意思是struts.xml里的那个result类型,默认是dispatcher吧,用那个插件后就得声明type是json,package也要继承json-default。文档里有更详尽的说明,但我也没用过那么多。

<result name="input" type="json">/show.jsp</result>

猜你喜欢