【问题标题】:How to get jQuery .load(), .post() response in Spring MVC?如何在 Spring MVC 中获取 jQuery .load()、.post() 响应?
【发布时间】:2016-04-11 06:53:48
【问题描述】:

我在 Spring MVC 中使用 jQuery 进行验证。与验证相关的一切都很好,但问题是我无法从目标页面向发送请求的页面返回任何响应。这是视图页面的部分代码(数据从哪里发送):

$('#loginbtn').click( function() {
        var haserror = false;

        if( $('#username').val() == null || $.trim( $('#username').val() ) == '' ) {
            $('.username').removeClass('hide');
            haserror = true;
        } else {
            $('.username').addClass('hide');
        }

        if( $('#password').val() == null || $.trim( $('#password').val() ) == '' ) {
            $('.password').removeClass('hide');
            haserror = true;
        } else {
            $('.password').addClass('hide');
        }

        if( haserror == true ) {
            return;
        } else {
            //console.log('OK');
            $('#checklogin').load("insert", {'username':$('#username').val(), 'password':$('#password').val() }, function(d) {
                //alert(d);
            });
        }
    });

上面的代码是正确验证的数据并将数据发送到我的目标:插入

这是为插入编写的代码:

@RequestMapping(value="/insert", method = RequestMethod.POST)
public String insert(Model model, @RequestParam(value="username", required=true) String username, @RequestParam(value="password", required=true) String password) throws SQLException {
    try {
        String query="INSERT INTO userlog(username, pword) VALUES('"+ username +"','"+ password +"')";
        Database.insert(query);
        return '1';
    } catch( SQLException E) {
        //E.printStackTrace();
        return '2';          
    }
}

Database.insert(query) 的代码:

package com.tng.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Database {
    public static void insert( String query ) throws java.sql.SQLException {
        Statement stmt = null;
        Connection conn = null;
    
        try {
            Class.forName("com.mysql.jdbc.Driver");
    
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/springtest","root","");  
            stmt= conn.createStatement();  
        
            stmt.execute(query);
        
            try {
                if(stmt != null) stmt.close();
                if(conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
 }

如果数据成功插入,我会尝试返回“1”,如果出现问题,我会尝试返回“2”(就像我在 PHP 项目中所做的那样)。但它试图将我重定向到具有以下 url 的页面:base_url/1 和 base_url/2,而不是发回“1”和“2”作为对我的源页面的响应。

谁能告诉我如何解决问题并从目标页面发送响应。

注意:我是Spring MVC的新手,上面的表格和数据插入只是为了测试,所以没有使用密码加密。
谢谢

【问题讨论】:

    标签: jquery spring spring-mvc


    【解决方案1】:

    你需要在你的 post 方法中添加 ResponseBody 注解。

    org.springframework.web.bind.annotation.ResponseBody

    @RequestMapping(value="/insert", method = RequestMethod.POST)
    @ResponseBody
    public String insert(Model model, @RequestParam(value="username", required=true) String username, @RequestParam(value="password", required=true) String password) throws SQLException {
        try {
            String query="INSERT INTO userlog(username, pword) VALUES('"+ username +"','"+ password +"')";
            Database.insert(query);
            return "1";
        } catch( SQLException E) {
            //E.printStackTrace();
            return "2";          
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2021-09-09
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      相关资源
      最近更新 更多