Debugging JavaScript and a servlet
Debugging JavaScript and a servlet
我是一个编程新手。这道题是为考试做准备的。我有一个servlet连接到我的MySQL数据库。此外,我有一个JavaScript。
我有两个日历,你可以选择"从"日期-"到"日期。如果我选择从2014-03-06到2014-03-10,我想打印出我在这段时间内工作了多少小时。这意味着我的servlet正在从MySQL数据库获取列"Allday_hours"。问题是,每次我选择一个日期从javascript,它只是返回所有的小时从Allday_hours。这意味着它将遍历所有列,而不是我选择的日期。
谁能看出我在这里做错了什么吗?Javascript: <form>
<input id="startDate"/>
<input id="endDate"/>
</form>
<div id="startresult"></div>
<div id="endresult"></div>
<script>
$(function(){
$("#startDate").datepicker({
dateFormat: 'yy-mm-dd',
onSelect: function(dateText,inst){
$('.selected-date').html(dateText);
$.ajax({
url: "../getHoursSQL",
type: "post",
data: JSON,
success: function(data){
start: $("#startDate").val();
alert("success");
$("#startresult").html(data);
},
error:function(){
alert("failure");
$("#startresult").html('there is error while submit');
}
});
}
});
});
$(function(){
$("#endDate").datepicker({
dateFormat: 'yy-mm-dd',
onSelect: function(dateText,inst){
$('.selected-date').html(dateText);
$.ajax({
url: "../getHoursSQL",
type: "post",
data: JSON,
success: function(data){
end: $("#endDate").val();
alert("success");
$("#endresult").html(data);
},
error:function(){
alert("failure");
$("#result").html('there is error while submit');
}
});
}
});
});
</script>
Servlet: package WorkPackage;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/getHoursSQL")
public class getHoursSQL extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
String connectionURL = "jdbc:mysql://localhost/NekiWork";
Connection connection=null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(connectionURL, "root", "");
String sql = "SELECT *, (Day_hours + (Day_minutes / 60)) AS Allday_hours FROM Workdata WHERE startDate='?' AND endDate='?'";
PreparedStatement pst = connection.prepareStatement(sql);
pst.setXXX(1,startDate);
pst.setXXX(2,endDate);
ResultSet rs = pst.executeQuery(sql);
float Allday_hours_sum = 0;
while (rs.next()){
Allday_hours_sum += rs.getFloat("Allday_hours");
}
res.setContentType("text/html;charset=UTF-8");
res.getWriter().print(Allday_hours_sum);
String startDate = req.getParameter("startDate");
String endDate= req.getParameter("endDate");
pst.close();
}
catch(ClassNotFoundException e){
System.out.println("Couldn't load database driver: " + e.getMessage());
}
catch(SQLException e){
System.out.println("SQLException caught: " + e.getMessage());
}
catch (Exception e){
System.out.println(e);
}
finally {
try {
if (connection != null) connection.close();
}
catch (SQLException ignored){
System.out.println(ignored);
}
}
}
}
首先,您忘记将startdateenddata从javascript代码发送到servlet。您可以通过更改ajax方法参数的"data"成员来实现。
您还应该从servlet中的请求中获取它,如下所示
String startDate = req.getParameter("startDate");
String endDate= req.getParameter("endDate");
然后你应该在preparedStatement中为输入提供值。
pst.setXXX(1,startDate);
pst.setXXX(2,endDate);
我希望这些信息能帮助你解决你的问题
相关文章:
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 当值更改时,在servlet中自动获取textarea值,无需单击按钮
- Selenium WebDriver and JavaScript change
- servlet中的请求对象,而不是从jsp接收参数值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- PHP and Javascript functions
- Javascript Return and if/else
- 在servlet中提交两个表单
- SetTimeout and clearTimeout in Javascript
- lightbox in html 5 and javascript
- TimelineJS and AngularJS
- 我们如何在互联网断开连接或用户关闭选项卡/浏览器时调用注销servlet
- timeago.js with datatable and PHP
- javascript button ajax and php
- 如何从servlet获取数据到ajax成功
- Ajax and Json with Rails
- 使用Jquery$.ajax将json数据传递给servlet(doPost)
- Combine onload, onresize and onclick
- jquery.get and servlet
- Debugging JavaScript and a servlet