ajax一直不进入success:function()总是提示获取不到数据 5C

public class UserDaoImpl implements UserDao {
@Override
public User login(User user) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = BaseDao.getCon();
String sql = "select * from user where name=? and password=?";
ps = con.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setString(2, user.getPassword());
rs = ps.executeQuery();
User users;
if (rs.next()) {
users = new User();
System.out.println();
users.setId(rs.getInt("id"));
users.setName(rs.getString("name"));
users.setPassword(rs.getString("password"));
users.setEmail(rs.getString("email"));
users.setPhone(rs.getString("phone"));
users.setMoney(rs.getString("money"));
return users;
} else {
return null;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

@Override
public boolean register(User user) {
    String sql = "insert into user values(0,?,?,?,?,?) ";
    List<Object> list = new ArrayList<Object>();
    list.add(user.getName());
    list.add(user.getPassword());
    list.add(user.getEmail());
    list.add(user.getPhone());
    list.add(user.getMoney());

    boolean flag = BaseDao.addUpdateDelete(sql, list.toArray());
    if (flag) {
        return true;
    } else {
        return false;
    }
}

public ArrayList<User> query() {
    Connection con = null;
    ArrayList<User> barArr = new ArrayList<User>();
    try {
        con = BaseDao.getCon();
        PreparedStatement stmt = con.prepareStatement("select * from user");
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            User bar = new User();
            bar.setName(rs.getString("name"));
            bar.setMoney(rs.getString("money"));
            barArr.add(bar);
        }
        con.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return barArr;
}

}

@WebServlet("/user/userlogin")
public class UserLoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    this.doPost(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    User user = new User();
    // 获取login.jsp页面提交的账号和密码
    String name = request.getParameter("name");
    String password = request.getParameter("password");
    String money=request.getParameter("money");
    // 测试数据
    System.out.println(name + " " + password+" "+money);
    // 获取login.jsp页面提交的账号和密码设置到实体类User?
    user.setName(name);
    user.setPassword(password);
    HttpSession session = request.getSession();
    // 引入数据交互层
    UserDao dao = new UserDaoImpl();
    User us = dao.login(user);
    // 测试返回的值
    System.out.println(us);
    if (us != null) {
        session.setAttribute("user", user);
        request.getRequestDispatcher("/index/echarts.jsp").forward(request, response);

        // request.setAttribute("info", "登录成功");
    } else {
        request.setAttribute("info", "登录失败");
        request.getRequestDispatcher("/index/info.jsp").forward(request, response);

    }

    UserDaoImpl barDao = new UserDaoImpl();
    ArrayList<User> barArr = barDao.query();
    response.setContentType("text/html; charset=utf-8");
    JSONArray json = JSONArray.fromObject(barArr);
    System.out.println("得到的数据:"+json.toString());
    PrintWriter writer = response.getWriter();
    writer.println(json);
    writer.flush();
    writer.close();
}

}

public class BaseDao {

private static String driver;
private static String url;
private static String user;
private static String password;
private static String money;

static {
    driver = ResourceBundle.getBundle("db").getString("driver");
    url = ResourceBundle.getBundle("db").getString("url");
    user = ResourceBundle.getBundle("db").getString("user");
    password = ResourceBundle.getBundle("db").getString("password");
}

public static Connection getCon() throws ClassNotFoundException, SQLException {
    Class.forName(driver);
    System.out.println("测试加载数据库成功");
    Connection con = DriverManager.getConnection(url, user, password);
    System.out.println("测试数据库连接成功");
    return con;
}

public static void close(Connection con, PreparedStatement ps, ResultSet rs) {
    if (rs != null) {// 关闭
        try {
            rs.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    if (ps != null) {
        try {
            ps.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    if (con != null) {
        try {
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

public static boolean addUpdateDelete(String sql, Object[] arr) {
    Connection con = null;
    PreparedStatement ps = null;
    try {
        con = BaseDao.getCon();// 第一步 :连接数据库的操作
        ps = con.prepareStatement(sql);// 第二步:预编译
        // 第三步:设置值
        if (arr != null && arr.length != 0) {
            for (int i = 0; i < arr.length; i++) {
                ps.setObject(i + 1, arr[i]);
            }
        }
        int count = ps.executeUpdate();// 第四步:执行sql语句
        if (count > 0) {
            return true;
        } else {
            return false;
        }
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return false;
}

}

<%@page import="org.apache.catalina.connector.Request"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



Hello ECharts



您的用户名是: ${user.name}

<br> function loadData(option) {</p> <pre><code> $.ajax({ type : &#39;post&#39;, //传输类型 async : false, url : &#39;bar.do&#39;, //web.xml中注册的Servlet的url-pattern data : { &quot;name&quot; : name }, dataType : &#39;json&#39;, //返回数据形式为json success : function(result) { if (result) { option.legend.data = []; option.series[0].data = []; for (var i = 0; i &lt; result.length; i++) { alert(result[i].name + &quot;---&quot; + result[i].money); option.legend.data.push(result[i].name); option.series[0].data.push({ name : result[i].name, value : result[i].money }); } myChart.setOption(option); } }, error : function(errorMsg) { alert(&quot;加载数据失败&quot;+errorMsg); } });//AJAX }//loadData() var myChart = echarts.init(document.getElementById(&#39;myDiv&#39;)); var option = { title : { text : &#39;某站点用户访问来源&#39;, subtext : &#39;纯属虚构&#39;, x : &#39;center&#39; }, tooltip : { trigger : &#39;item&#39;, formatter : &quot;{a} {b} : {c} ({d}%)&quot; }, legend : { orient : &#39;vertical&#39;, left : &#39;left&#39;, data : [] }, series : [ { name : &#39;访问来源&#39;, type : &#39;pie&#39;, radius : &#39;55%&#39;, center : [ &#39;50%&#39;, &#39;60%&#39; ], data : [], itemStyle : { emphasis : { shadowBlur : 10, shadowOffsetX : 0, shadowColor : &#39;rgba(0, 0, 0, 0.5)&#39; } } } ] }; //加载数据到option loadData(option); //设置option &lt;/script&gt; </code></pre> <p></body></p>

24个回答

老哥们需要补什么代码 说一声 我在线等

<%@page import="org.apache.catalina.connector.Request"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



Hello ECharts



您的用户名是: ${user.name}

<br> function loadData(option) {</p> <pre><code> $.ajax({ type : &#39;post&#39;, //传输类型 async : false, url : &#39;bar.do&#39;, //web.xml中注册的Servlet的url-pattern data : { &quot;name&quot; : name }, dataType : &#39;json&#39;, //返回数据形式为json success : function(result) { if (result) { option.legend.data = []; option.series[0].data = []; for (var i = 0; i &lt; result.length; i++) { alert(result[i].name + &quot;---&quot; + result[i].money); option.legend.data.push(result[i].name); option.series[0].data.push({ name : result[i].name, value : result[i].money }); } myChart.setOption(option); } }, error : function(errorMsg) { alert(&quot;加载数据失败&quot;+errorMsg); } });//AJAX }//loadData() var myChart = echarts.init(document.getElementById(&#39;myDiv&#39;)); var option = { title : { text : &#39;某站点用户访问来源&#39;, subtext : &#39;纯属虚构&#39;, x : &#39;center&#39; }, tooltip : { trigger : &#39;item&#39;, formatter : &quot;{a} {b} : {c} ({d}%)&quot; }, legend : { orient : &#39;vertical&#39;, left : &#39;left&#39;, data : [] }, series : [ { name : &#39;访问来源&#39;, type : &#39;pie&#39;, radius : &#39;55%&#39;, center : [ &#39;50%&#39;, &#39;60%&#39; ], data : [], itemStyle : { emphasis : { shadowBlur : 10, shadowOffsetX : 0, shadowColor : &#39;rgba(0, 0, 0, 0.5)&#39; } } } ] }; //加载数据到option loadData(option); //设置option &lt;/script&gt; </code></pre> <p></body></p> <pre><code> </code></pre>

图片说明

qq_27784829
Pittttttttt 回复wpstudy: 那个似乎没影响。。我在另一个去掉“”可以运行
接近 3 年之前 回复
wpstudy
wpstudy 将 data中的 key值name 中的“ ”去掉,一般都是语法错误导致
接近 3 年之前 回复

之前我也碰到过类似的情况我的问题是ajax的type和实际RequestMapping中的method不一致导致,虽然在network中能看到这次请求是200但是老是进error方法

wpstudy
wpstudy 回复Pittttttttt: 将 data中的 key值name 中的“ ”去掉,一般都是语法错误导致
接近 3 年之前 回复
qq_27784829
Pittttttttt 老哥你看看我这里面一致不?
接近 3 年之前 回复

dataType 是 json 类型,注意返回的JSON数据是否是严格的JSON格式

wpstudy
wpstudy 将 data中的 key值name 中的“ ”去掉,一般都是语法错误导致
接近 3 年之前 回复
qq_27784829
Pittttttttt 取的数据库里面的值,就是一个一个"name":"dz" 这样的,我用控制台打印了
接近 3 年之前 回复

![图片说明](https://img-ask.csdn.net/upload/201712/27/1514342892_931176.png)<br>
图片说明

图片说明

qq_27784829
Pittttttttt 这里有了json.tostring应该 可以确定是json类型吧 还有可能啥原因呢 需要啥代码我在线补
接近 3 年之前 回复

这里有了json.tostring应该 可以确定是json类型吧 还有可能啥原因呢 需要啥代码我在线补

你方法返回的不是个实体吗?所以在显示的时候不应该是result.实体[i].name吗,你可以先在function里面弹窗看返回信息有没有接收到

qq_27784829
Pittttttttt 回复Odyssey_May: 控制台可以打印 数据库的数据,但是这个打印的方法和jsp页面的方法没有关系,我写在java文件里面的
接近 3 年之前 回复
Odyssey_May
Odyssey_May 回复Pittttttttt: 页面运行方法的时候后台能在控制台输出数据吗?如果能输出数据,说明你的路径没有错,有可能是你的前台有什么地方粗心写错了,比如标点符号写成中文的了
接近 3 年之前 回复
qq_27784829
Pittttttttt 加了alert(result),没反应
接近 3 年之前 回复
qq_27784829
Pittttttttt 回复Odyssey_May: 没反应。。。
接近 3 年之前 回复
Odyssey_May
Odyssey_May 回复Pittttttttt: 不是加这个弹窗,在success后面加一个alter(result)试试,这个result就是你返回的值,看看能不能在页面上显示出来
接近 3 年之前 回复
qq_27784829
Pittttttttt 哪个方法返回的是实体? 我在ajax上面加上alert(121) 运行的时候可以出现弹窗121
接近 3 年之前 回复

图片说明

gxc516
赤贯妖星 回复Pittttttttt: 肯定的。成功回调函数里的result 都换成data
接近 3 年之前 回复
songbaojian521
丶豆豆 json 改为 text ajax里 dataType有两种形式 一种是text 字符换 就是你后台往前台传数据的时候 你的值是字符串 ,第二种就是json, 你的页面也的text或者json在于你后台writer.println(json);里面写的是什么
接近 3 年之前 回复
qq_27784829
Pittttttttt 下面的if里面的也要换成data吗, 我在web.xml里面路径是/bar.do
接近 3 年之前 回复
共24条数据 1 3 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐