Avatar billede madseksperten Nybegynder
05. marts 2014 - 19:09 Der er 6 kommentarer og
1 løsning

kald en MySQL query med JQuery/AJAX

Hejsa.

Jeg har efterhånden fået lavet mig et kalendersystem, bla ved hjælp fra nogle godt folk herinde fra.
Kalenderen ser sådan ud:

http://postimg.org/image/5uurc5ycb/

Her er meningen så at man kan vælge en "fra" dato og "til" dato. Jeg har fået mit javascript til at virke med denne kode:

<script>
       
    $(function(){
        $("#start1").datepicker({
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText,inst){
                alert(dateText);
             
                $.ajax({
                      url: "../dataExchange",
                      type: "post",
                      data: Date,
                      success: function(){
                          alert("success");
                          $("#result").html('submitted successfully');
                      },
                      error:function(){
                          alert("failure");
                          $("#result").html('there is error while submit');
                      } 
                    });
            }
        });
    });
   
   
    $(function(){
        $("#start2").datepicker({
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText,inst){
                alert(dateText);
             
                $.ajax({
                      url: "../dataExchange",
                      type: "post",
                      data: Date,
                      success: function(){
                          alert("success");
                          $("#result").html('submitted successfully');
                      },
                      error:function(){
                          alert("failure");
                          $("#result").html('there is error while submit');
                      } 
                    });
            }
        });
    });
   
</script>

Her bliver min servlet kaldt succesfuldt, og der er connection igennem til databasen. Det jeg gerne vil have returneret er en column som hedder Allday_hours i min databasen, som bruger denne query:

SELECT *, (Day_hours + (Day_minutes / 100)) as Allday_hours FROM Workdata

Men hvor og hvordan skal jeg skrive denne query? Er det inde i mit AJAX, eller skal jeg putte det i en servlet, som AJAX så kalder?

Mvh Mads
Avatar billede erikjacobsen Ekspert
05. marts 2014 - 20:50 #1
Hvis du skriver SQL i et AJAX kald, vil enhver hacker kunne erstatte det med noget andet, fx "DROP TABLE Workdata".

Du skal derfor have selve SQL-sætningen i din servlet.
Avatar billede madseksperten Nybegynder
05. marts 2014 - 21:17 #2
Tak for svaret Erik. Så det vil sige at lave en ny servlet med SQL sætningen? Hvordan kaldes servletten inde fra AJAX så?
Avatar billede erikjacobsen Ekspert
05. marts 2014 - 21:22 #3
Ved det navn du giver den - jeg kender ikke lige dit setup
Avatar billede madseksperten Nybegynder
05. marts 2014 - 21:44 #4
Men burde jeg egentligt ikke kunne gøre nogenlunde på denne måde.. Istedet for at kalde min dataExchange i min javascript, så kalde

$.ajax({
        url: "../getHoursSQL",en servlet der så lidt ud som denne:

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 init(ServletConfig config) throws ServletException{
        super.init(config);
    }
   
    public void doPost(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException{
       
        String connectionURL = "jdbc:mysql://localhost/NekiWork";
        Connection connection=null;
       
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
       
        try {
           
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(connectionURL, "root", "");
            String sql = "SELECT *, (Day_hours + (Day_minutes / 100)) as Allday_hours FROM Workdata";
            PreparedStatement pst = connection.prepareStatement(sql);
           
            pst.executeUpdate();
            pst.close();
        }
        catch(ClassNotFoundException e){
           
            out.println("Couldn't load database driver: " + e.getMessage());
        }
        catch(SQLException e){
            out.println("SQLException caught: " + e.getMessage());
        }
        catch (Exception e){
            out.println(e);
        }
        finally {
       
        try {
            if (connection != null) connection.close();
        }
            catch (SQLException ignored){
                out.println(ignored);
            }
        }
    }
}
Avatar billede madseksperten Nybegynder
05. marts 2014 - 22:20 #5
Jeg tror det er ved at være over i java afdelingen. Skal vi dele pointene, så opretter jeg lige et spørgsmål der istedet for
Avatar billede erikjacobsen Ekspert
05. marts 2014 - 22:30 #6
Ingen point til mig, tak.

Jo, det ligner den måde man skal gøre det på ;)
Avatar billede madseksperten Nybegynder
09. marts 2014 - 10:03 #7
ok, jamen tak for hjælpen :-)

Mvh Mads
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester