昨天写了一段代码,关于ajax的,一直没有取到从另一个页面response出来的XML值。

昨天写了一段代码,关于ajax的,一直没有取到从另一个页面response出来的XML值。
哎,今天上午弄了一个上午,终于知道为什么了,原来是我没有设置Response.ContentType=("text/xml;charset=UTF-8");输出的是“text/html”格式的,所以我老是出不到responseXML的值,在输出前面加上Response.ContentType=("text/xml;charset=UTF-8");就可以了。呵呵。。。兴奋啊。。。
贴出部分code:
 后台方法:
public void getxml()
  {
   System.Text.StringBuilder sb=new System.Text.StringBuilder();
   sb.Append("<?xml version=/"1.0/"?>");
   sb.Append("<CN>");
   for(int i=0;i<10;i++)
   {
    sb.Append("<china sex='");
    if(i%2==0)
    {
     sb.Append("1");
    }
    else
    {
     sb.Append("2");
    }
    sb.Append("' age='");
    sb.Append(i);
    sb.Append("'/>");
   }
   sb.Append("</CN>");
   Response.ContentType=("text/xml;charset=UTF-8");
   Response.Write(sb.ToString());
  }

前台:
function updatePage() { try { if(xmlhttp.readyState==4) { if(xmlhttp.status==200)
{ debugger //设置断点调试
var xml=xmlhttp.responseXML;
}
+xml+" "; document.write(ss);*/ var a=xml.getElementsByTagName("china"); var Mynode=xml.lastChild; for(var i=0;i
希望和更多的人交流ajax技术,
QQ:5171031
MSN:wgale@126.com

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/JavaScript"> alimama_pid="mm_10029522_914430_1885897"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="12"; alimama_width=468; alimama_height=60; alimama_type=2; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script>
posted on 2006-10-20 12:59 oo縼箻ㄗs.鋒 阅读(520) 评论(5)   编辑 收藏 所属分类: AJAX

FeedBack:
#1楼 
2007-06-28 11:18 | rain [未注册用户]
我也遇到了 这个问题,但是还是解决不了
代码如下:
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version='1.0'?>");
sb.Append("<pictures>");
if (dt != null || dt.Rows.Count > 0)
{
sb.Append("<item>");
foreach (DataRow row in dt.Rows)
{
sb.Append("<name>" + row["ALBUM_NAME"] + "</name><url>" + row["ALBUM_URL"] + "</url><description>" + row["ALBUM_DESC"] + "</description>");
}
sb.Append("</item>");
}
sb.Append("</pictrues");

Response.ContentType = ("text/xml;charset=UTF-8");
Response.Write(sb.ToString());
是什么原因?
   回复   引用     
#2楼 
2007-06-29 14:19 | 呵呵 [未注册用户]
@rain
编码问题呗
   回复   引用     
#3楼 
2007-07-03 10:24 | rain [未注册用户]
@呵呵
编码没问题,我用responseText可以接收到xml的数据
????
   回复   引用     
#4楼 
2007-07-04 14:47 | 呵呵 [未注册用户]
@rain
汗。。。
responseText出来的是字符串。
responseXML出来的可以直接转换成XMLDocument
   回复   引用     
#5楼 
2007-09-13 09:35 | wgale025 [未注册用户]
--引用--------------------------------------------------
rain: 我也遇到了 这个问题,但是还是解决不了
代码如下:
StringBuilder sb = new StringBuilder();
sb.Append(&quot;&lt;?xml version='1.0'?&gt;&quot;);
sb.Append(&quot;&lt;pictures&gt;&quot;);
if (dt != null || dt.Rows.Count &gt; 0)
{
sb.Append(&quot;&lt;item&gt;&quot;);
foreach (DataRow row in dt.Rows)
{
sb.Append(&quot;&lt;name&gt;&quot; + row[&quot;ALBUM_NAME&quot;] + &quot;&lt;/name&gt;&lt;url&gt;&quot; + row[&quot;ALBUM_URL&quot;] + &quot;&lt;/url&gt;&lt;description&gt;&quot; + row[&quot;ALBUM_DESC&quot;] + &quot;&lt;/description&gt;&quot;);
}
sb.Append(&quot;&lt;/item&gt;&quot;);
}
sb.Append(&quot;&lt;/pictrues&quot;);

Response.ContentType = (&quot;text/xml;charset=UTF-8&quot;);
Response.Write(sb.ToString());
是什么原因?
--------------------------------------------------------

把你的这行改成:sb.Append("<?xml version='1.0'?>"); 换成这样的:
sb.Append("<?xml version=/"1.0/"?>"); 这样就OK了.要知道XML里面实体才有单引号的吧.你直接用单引号,XML好像不识别吧...
   回复   引用     
<script type="text/javascript"> function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(handleInitializeRequest); //Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest); } function handleInitializeRequest(sender, args) { var prm = Sys.WebForms.PageRequestManager.getInstance(); var eid = args.get_postBackElement().id; /*if (eid.indexOf("DeleteLink")>0) { args.get_postBackElement().innerHTML = " 正在删除..."; } else */ if (eid.indexOf("btnSubmit")>0) { document.getElementById("AjaxHolder_PostComment_ltSubmitMsg").innerHTML="正在提交..."; document.getElementById("AjaxHolder_PostComment_btnSubmit").disabled = true; } else if(eid.indexOf("refreshList")>0) { document.getElementById("AjaxHolder_PostComment_refreshList").innerHTML=" 正在刷新..."; } } function TempSave(ElementID) { try { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } catch(ex) { } } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); } </script>

标题
姓名
主页
Email(博主才能看到)
验证码*  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-02-27 14:44 编辑过


相关链接:<script type="text/javascript"> var title = document.title; document.write("
"); document.write("
### 回答1: public class LoginController { @Autowired private LoginService loginService; //实现十天免登录 @RequestMapping("/login") public void login(HttpServletRequest request, HttpServletResponse response,String userName,String password){ //获取cookie Cookie[] cookies = request.getCookies(); //检查cookie中是否有记住密码 if(cookies!=null && cookies.length>0){ for(Cookie cookie : cookies){ if("remember".equals(cookie.getName())){ //有记住密码,则判断有没有过期 String remember = cookie.getValue(); String[] split = remember.split("#"); String username = split[0]; String password = split[1]; //判断用户名和密码是否正确 boolean flag = loginService.checkUserNameAndPassword(username, password); if(flag){ //未过期,则自动登录 Date expireDate = new Date(System.currentTimeMillis() + 10 * 24 * 3600 * 1000); //设置cookie过期时间 cookie.setMaxAge((int) (expireDate.getTime()/1000)); //重新设置cookie response.addCookie(cookie); //登录成功 return; } } } } //未登录或者登录过期,则从数据库中查询用户名和密码 boolean flag = loginService.checkUserNameAndPassword(userName, password); if(flag){ //登录成功 Date expireDate = new Date(System.currentTimeMillis() + 10 * 24 * 3600 * 1000); //记住我 Cookie cookie = new Cookie("remember", userName + "#" + password); //设置cookie过期时间 cookie.setMaxAge((int) (expireDate.getTime()/1000)); response.addCookie(cookie); }else { //登录失败 } } } ### 回答2: 使用SSM框架实现登录注册,并且实现十天免登录的Java代码如下: 首先,在数据库中创建用户表user,包含id、username、password、lastLoginTime等字段。 登录功能代码: ```java @RequestMapping("/login") @ResponseBody public String login(String username, String password, HttpSession session, HttpServletResponse response) { User user = userService.getUserByUsername(username); if (user == null || !user.getPassword().equals(password)) { return "登录失败,请检查用户名和密码"; } // 设置登录信息 session.setAttribute("user", user); // 设置cookie if (rememberMe) { setLoginCookie(response, user.getId()); } return "登录成功"; } private void setLoginCookie(HttpServletResponse response, int userId) { // 获取当前时间 Date now = new Date(); // 计算10天后的时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(now); calendar.add(Calendar.DATE, 10); Date expireTime = calendar.getTime(); // 创建cookie Cookie cookie = new Cookie("userId", String.valueOf(userId)); cookie.setMaxAge((int) ((expireTime.getTime() - now.getTime()) / 1000)); // 设置cookie有效期 cookie.setPath("/"); // 设置cookie路径 response.addCookie(cookie); // 将cookie添加到响应中 } ``` 注册功能代码: ```java @RequestMapping("/register") @ResponseBody public String register(String username, String password) { User checkUser = userService.getUserByUsername(username); if (checkUser != null) { return "用户名已存在"; } User user = new User(); user.setUsername(username); user.setPassword(password); userService.addUser(user); return "注册成功"; } ``` 在拦截器中实现免登录功能: ```java public class LoginInterceptor extends HandlerInterceptorAdapter { @Autowired private UserService userService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); if (user == null) { Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("userId".equals(cookie.getName())) { int userId = Integer.parseInt(cookie.getValue()); user = userService.getUserById(userId); if (user != null) { session.setAttribute("user", user); break; } } } } } return true; } } ``` 将拦截器配置到Spring MVC配置文件中: ```xml <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.example.interceptor.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors> ``` ### 回答3: 为了实现登录注册功能,并使用ssm框架,同时保证十天免登录,我们可以按以下步骤进行实现: 1. 创建数据库表 首先,创建一个名为user的数据库表,包含以下字段:id(主键自增)、username(用户名)、password(密码)、last_login_time(最后登录时间)等。 2. 创建用户实体类 在Java项目中创建一个User类,定义与数据库表对应的属性,并生成相应的getter和setter方法。 3. 创建Dao接口与Mapper文件 使用MyBatis创建UserDao接口,并创建对应的Mapper配置文件。在Mapper文件中,通过SQL语句实现用户登录、注册和更新最后登录时间等功能。 4. 创建Service接口与实现类 创建UserService接口,并实现用户登录、注册和更新最后登录时间等功能。在实现类中,调用UserDao中相应的方法完成相关操作。 5. 创建Controller类 创建UserController类,处理用户登录、注册等请求。在Controller类中,通过调用UserService中的方法处理请求,并返回相应的结果。 6. 实现十天免登录功能 为了实现十天免登录,我们可以在用户成功登录后,在Cookie中设置一个token,该token具有一定的时效性,比如设置为10天。在用户访问需要登录权限的接口时,后台首先检查Cookie中的token是否有效,如果有效则允许访问,否则需要重新登录。 7. 进行前后端交互 使用前端技术(如HTML、CSS和JavaScript)创建用户登录、注册的页面,通过Ajax技术与后台进行数据交互。前端页面通过调用相应的Controller方法来实现登录、注册功能。 通过以上步骤的实现,我们可以在Java项目中基于ssm框架实现登录注册功能,并且保证了十天免登录的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值