当前位置:编程学习 > JAVA >>

spring MVC 结合 ajax 返回错误

使用 spring MVC 结合ajax的时候,返回ModelAndView 是 页面无法接受返回值
代码如下:
控制器UserAction.java:
package com.user.web;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.jdbc.bean.User;
import com.user.service.ITUserSV;
import com.zhuangyuan.util.action.BasicAction;

@Controller
@RequestMapping("/User")
public class UserAction extends BasicAction{

@RequestMapping("/Register")
public ModelAndView registerUser(HttpServletRequest request,ModelMap mm){
String userName = request.getParameter("userName");
String password = request.getParameter("passWord");
String lastIp = request.getHeader("x-forwarded-for");
Date  date = new Date();
User user = new User();
user.setLastIp(lastIp);
user.setUserName(userName);
user.setPassword(password);
user.setLastTime(date);
user.setUserId(9L);
ModelAndView modelAndView=new ModelAndView("userRegister");
String msg="";
//注册
ITUserSV tUserSV = (ITUserSV)this.getService("tuserSVImpl");
try {
tUserSV.insertUser(user);
} catch (Exception e) {
msg=e.toString();
}
msg="注册成功!状元网欢迎你!";
mm.addAttribute("msg", msg);
return modelAndView;
}

}


jsp页面:userRegister.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ include file="../util/head.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script type='text/javascript' src='<%=request.getContextPath() %>/util/jquery/jquery.js'></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>状元网----用户注册</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

  </head>
  <script type="text/javascript">
  
     $(function(){
        $('#commit').click(function(){
             commit();
        });
        $('#reset').click(function(){
             reset();
        });
        $('#rePassWord').blur(function(){
            if($('#rePassWord').val()!=$('#passWord').val()){
              alert("输入的两次密码不一致!");
              $('#rePassWord').focus();
              return;
            }
        });
     });
      
      function commit(){
         var userName = $('#userName').val();
         var passWord = $('#passWord').val();
         if(userName==null||userName==""){
             alert("请填写用户名!");
             $('#userName').focus();
             return;
         }
         if(passWord==null||passWord==""){
             alert("请输入密码!");
             $('#passWord').focus();
             return;
         }
         $.ajax({
              type:"POST",
              dataType:'json',
              //contentType:"application/json",
  cache:false,
              data:"userName="+userName+"&passWord="+passWord,
              url:"<%=request.getContextPath() %>/User/Register.do?formart=json",
              success:function(data){
                 aler(data.msg);
              },
              error:function(data){
                 alert("注册失败,系统错误:"+data);
              }
         });
      }
      
      function reset(){
         $('#userName').val("");
         $('#passWord').val("");
         $('#rePassWord').val("");
      }
  
  </script>
  <body>
    <center>
          <table>
             <tr>
               <td>用  户  名:</td>
               <td><input id="userName"/></td>
             </tr>
             <tr>
               <td>密       码:</td>
               <td><input type="password" id="passWord"/></td>
             </tr>
             <tr>
               <td>再次确定密码:</td>
               <td><input type="password" id="rePassWord"/></td>
             </tr>
             <tr>
               <td><a  id="commit">提交</a></td>
               <td><a  id="reset"/>取消</a></td>
             </tr>
          </table>
    </center>
  </body>
</html>




servlet配置文件
zhuangyuan-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.1.xsd">
       <context:component-scan base-package="com.user.web"></context:component-scan>
       <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
             p:defaultContentType="text/html"
             p:favorPathExtension="false"
             p:favorParameter="true"
             p:ignoreAcceptHeader="true"
       >
            <property name="mediaTypes">
                <map>
                   <entry key="html" value="text/html"/>
                   <entry key="xml"  value="application/xml" />
                   <entry key="json" value="application/json" />
                </map>
            </property>
            <property name="defaultViews">
              <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"></bean>
                <!-- <bean class="org.springframework.web.servlet.view.xml.MarshallingView" p:modelKey="msg" p:marshaller-ref="xmlMarshaller"></bean> -->
              </list>
            </property>
       
       </bean>
       
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
             p:order="10"
             p:viewClass="org.springframework.web.servlet.view.JstlView"
             p:prefix="/user/"
             p:suffix=".jsp"
       >
       </bean>
       
</beans>




当点击提交按钮的时候 ,数据库中可以新增一条记录,但是在返回的时候,执行的却是 ajax中的 error 函数!!! ajax spring mvc servlet java ModelAndView --------------------编程问答-------------------- 说明你的service业务做了,但是返回数据给前台的时候出错了 --------------------编程问答-------------------- 后台肯定报错了,你看下异常信息,或者你再用firebug看下错误信息 --------------------编程问答--------------------
引用 2 楼 huxiweng 的回复:
后台肯定报错了,你看下异常信息,或者你再用firebug看下错误信息

--------------------编程问答--------------------
引用 3 楼 xiaogutou1 的回复:
Quote: 引用 2 楼 huxiweng 的回复:

后台肯定报错了,你看下异常信息,或者你再用firebug看下错误信息


看控制台 --------------------编程问答-------------------- 不要看js。。 --------------------编程问答--------------------
引用 5 楼 huxiweng 的回复:
不要看js。。
赶紧试我的Serverlet配置文件出了问题,但是没有把握!! --------------------编程问答--------------------
引用 6 楼 xiaogutou1 的回复:
Quote: 引用 5 楼 huxiweng 的回复:

不要看js。。
赶紧试我的Serverlet配置文件出了问题,但是没有把握!!

看控制台的错误啊
--------------------编程问答-------------------- $.post('<%=request.getContextPath() %>/User/Register.do?formart=json',{'userName':userName,'passWord':passWord}, function(data){
aler(data.msg);
} --------------------编程问答-------------------- jquery 错误信息可以打印出来 。 --------------------编程问答-------------------- 楼主,你的跳转方式不对吧,应该是用相应的方式哦.... --------------------编程问答-------------------- 打错了,

 @RequestMapping("/Register")
    public ModelAndView registerUser(HttpServletRequest request,ModelMap mm){
        String userName = request.getParameter("userName");
        String password = request.getParameter("passWord");
        String lastIp = request.getHeader("x-forwarded-for");
        Date  date = new Date();
        User user = new User();
        user.setLastIp(lastIp);
        user.setUserName(userName);
        user.setPassword(password);
        user.setLastTime(date);
        user.setUserId(9L);
        ModelAndView modelAndView=new ModelAndView("userRegister");
        String msg="";
        //注册
        ITUserSV tUserSV = (ITUserSV)this.getService("tuserSVImpl");
        try {
            tUserSV.insertUser(user);
        } catch (Exception e) {
            msg=e.toString();
        }
        msg="注册成功!状元网欢迎你!";
        mm.addAttribute("msg", msg);
        return modelAndView;
    }


这个要改成response方式的吧... --------------------编程问答--------------------  return modelAndView   这样会导致重新跳转页面,ajax肯定会error了 --------------------编程问答-------------------- ajxa请求返回是void,是print()到前台的,
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,