2014-12-20 13 views
-3

Я пытаюсь вставить мои данные в базу данных с помощью текстового поля, когда он вставляет данные только с помощью Internet Explorer, но не в Mozilla firefox.Моя запись не вставляется в базу данных?

Это странно .....

Мои данные когда-то получает загружены, но только с помощью Internet Explorer, а иногда она перестает работать. Пожалуйста, помогите, что это значит?

Вот мой код:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ page import="java.sql.*"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Insert title here</title> 
<script type="text/javascript" > 
$(function() { 
    $(".update_button").click(function() { 

    var boxval = $("#content").val(); 
    var dataString = 'content='+ boxval; 

    if(boxval=='') 
    { 
     alert("Please Enter Some Text"); 
    } 
    else 
    { 
    $.ajax({ 
     type: "POST", 
     url: "demo.jsp", 
     data: dataString, 
     cache: false 
     }); 
    } 
    }); 
}); 
</script> 

</head> 
<body> 
    <div> 
     <form method="post" name="form" action=""> 
      <h3>What are you doing?</h3> 
      <textarea name="content" id="content" ></textarea><br /> 
      <input type="submit" value="Update" name="submit" class="update_button" /> 
     </form> 
    </div> 

    <% 
    try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/poststatus", "root", "1234"); 
     Statement st=con.createStatement(); 
     ResultSet rs=st.executeQuery("select * from messages order by msg_id desc"); 
      while(rs.next()){ 
       String msg=rs.getString("msg"); 
    %> 
      <ol id="update" class="timeline"><%=msg %></ol> 
<% 
      } 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
%> 

</body> 
</html> 

и вот мой demo.jsp:

<%@ page import="java.sql.*" errorPage="" %> 

<% 
    String content=request.getParameter("content"); 
    try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/poststatus", "root", "1234"); 
     Statement st=con.createStatement(); 
     int i=st.executeUpdate("insert into messages(msg) values('"+content+"')"); 

     } 
     catch(Exception e){ 
     e.printStackTrace(); 
    } 
%> 

И да, я могу принести мои данные из базы данных ..as вы можете увидеть мой код. Но я не могу вставить данные.

Несомненно, справка будет оценена!

EDITED:

Вот мой создатель таблицы:

create database if not exists poststatus; 
use poststatus; 

create table messages(
    msg_id INT auto_increment, 
    msg VARCHAR(1000) NOT NULL, 
    primary key(msg_id) 
); 
+0

получить АЯКС ответ на 'успеха:' 'отказ:' и 'console.log' это .. – Riad

+0

я использовал ... Но это ничего не говорит ... :( –

+0

дать ответ от URL-адреса обратно в ajax, а также обновить код, который вы пробовали с помощью '$ .ajax' call .. – Riad

ответ

0

Кнопка обновления, которая отправляет запрос AJAX также кнопка форме, отправляйте, поэтому при нажатии на нее, она начинает отправляя форму, которая перемещается от текущей страницы, отключая код, прежде чем он сможет запустить запрос AJAX.

Изложить начало обработчика щелчка, чтобы:

$(".update_button").click(function(e) { 
    e.preventDefault(); 

Вызов preventDefault() на мероприятии будет препятствовать форме от представления, давая вашему AJAX функционировать возможность запуска.


Кроме того, в коде Java существует серьезная проблема; потому что значение вставляется с конкатенацией строки, оно создает вопиющую уязвимость SQL-инъекции, а также не будет работать, если кто-то невинно вводит апостроф. Изменение:

Statement st=con.createStatement(); 
int i=st.executeUpdate("insert into messages(msg) values('"+content+"')"); 

к:

PreparedStatement st = con.prepareStatement("insert into messages(msg) values(?)"); 
st.setString(1, content); 
int i = st.executeUpdate(); 
Смежные вопросы