Huhu,
im moment komme ich einfach nicht weiter mit meinem Script, da ich nicht weiss, wo mein Denkfehler liegt.
Ich möchte eine Tabelle füllen und diese dann bei Klick auf die Grundeinträge leeren, bzw. neue Einträge reinschreiben.. das ganze mit dem Reinschreiben funktioniert soweit schon nur werden beim löschen zu viele Einträge entnommen. Das ist jetzt mein Problem.
Mein Problem ist jetzt, wenn ich Gruppe 1 öffne, sie danach wieder öffne, werden nicht nur die untereinträge gelöscht, was eigentlich passieren sollte, sondern auch Gruppe 2 und Gruppe 3.. diese sollten jedoch bestehen bleiben. Ich finde einfach meinen Denkfehler nicht.
Das Hauptproblem liegt dann wohl also in diesen Zeilen hier:
vielleicht weiss ja jemand weiter, ich komme einfach nicht drauf.
Falls jemand zum testen noch die gettime.java brauch um das ganze mit dem Servlet zu testen:
Ich danke schonmal für jegliche vorschläge.
im moment komme ich einfach nicht weiter mit meinem Script, da ich nicht weiss, wo mein Denkfehler liegt.
Ich möchte eine Tabelle füllen und diese dann bei Klick auf die Grundeinträge leeren, bzw. neue Einträge reinschreiben.. das ganze mit dem Reinschreiben funktioniert soweit schon nur werden beim löschen zu viele Einträge entnommen. Das ist jetzt mein Problem.
Code:
<%--
Document : index.jsp
Created on : 12.06.2009, 13:07:25
Author : Roth-D
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP and Servlet using AJAX</title>
<script type="text/javascript">
function getXMLObject() //XML OBJECT
{
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+
}
catch (e2) {
xmlHttp = false // No Browser accepts the XMLHTTP Object then false
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest(); //For Mozilla, Opera Browsers
}
return xmlHttp; // Mandatory Statement returning the ajax object created
}
var xmlhttp = new getXMLObject(); //xmlhttp holds the ajax object
function request(s) {
if(xmlhttp) {
xmlhttp.open("GET","gettime?orgID="+s.title,true); //send to servlet
xmlhttp.onreadystatechange = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(null);
}
}
function handleServerResponse() {
if (xmlhttp.readyState == 4) {// 4 = "loaded"
if(xmlhttp.status == 200) {// 200 = "OK"
var result = xmlhttp.responseText;
var theTable = (document.all) ? document.all.myTABLE : document.getElementById("history");
var theTableBody = theTable.tBodies[0];
var where = null;
for (var i = 0; i < theTableBody.rows.length; i++) {
var v1 = new String(theTableBody.rows[i].cells[1].title);
var v2 = new String(trim(result));
if(v1.toString() == v2.toString()) {
where = i+1;
}
v1 = new String(theTableBody.rows[i].cells[3].title);
while (v1.toString() == new String("del")) {
theTableBody.deleteRow(i);
}
}
for (var z = 0; z < 4; z++) {
var newCell;
var newRow = theTableBody.insertRow(where);
for (var i = 0; i < 7; i++) {
newCell = newRow.insertCell(i);
if (i > 2) {
newCell.innerHTML = result;
newCell.title = "del";
}
}
}
}
else {
alert("Error during AJAX call. Please try again");
}
}
}
function trim (zeichenkette) {
// Erst führende, dann Abschließende Whitespaces entfernen
// und das Ergebnis dieser Operationen zurückliefern
return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
}
</script>
<body>
<table id="history">
<tr id="f1">
<th id="no"></th>
<th id="no"></th>
<th id="no"></th>
<th>Art</th>
<th>Beginn</th>
<th>Ende</th>
<th>Anzahl Tage</th>
</tr>
<tr>
<th id="no">Abteilung II</th>
<th id="no">-</th>
<th id="no">-</th>
<th> </th>
<th> </th>
<th> </th>
<th> </th>
</tr>
<tr>
<th id="no">-</th>
<th onClick="request(this);" id="no" title="12">Gruppe 1</th>
<th id="no">-</th>
<th> </th>
<th> </th>
<th> </th>
<th> </th>
</tr>
<tr>
<th id="no">-</th>
<th onClick="request(this);" id="no" title="13">Gruppe 2</th>
<th id="no">-</th>
<th> </th>
<th> </th>
<th> </th>
<th> </th>
</tr>
<tr>
<th id="no">-</th>
<th onClick="request(this);" id="no" title="14">Gruppe 3</th>
<th id="no">-</th>
<th> </th>
<th> </th>
<th> </th>
<th> </th>
</tr>
</table>
</body>
</head>
</html>
Mein Problem ist jetzt, wenn ich Gruppe 1 öffne, sie danach wieder öffne, werden nicht nur die untereinträge gelöscht, was eigentlich passieren sollte, sondern auch Gruppe 2 und Gruppe 3.. diese sollten jedoch bestehen bleiben. Ich finde einfach meinen Denkfehler nicht.
Das Hauptproblem liegt dann wohl also in diesen Zeilen hier:
Code:
v1 = new String(theTableBody.rows[i].cells[3].title);
while (v1.toString() == new String("del")) {
theTableBody.deleteRow(i);
}
vielleicht weiss ja jemand weiter, ich komme einfach nicht drauf.
Falls jemand zum testen noch die gettime.java brauch um das ganze mit dem Servlet zu testen:
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
*
* @author Roth-D
*/
public class gettime extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet gettime</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet gettime at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
*/
out.println(request.getParameter("orgID"));
//out.println(request.getParameter("orgID"));
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Ich danke schonmal für jegliche vorschläge.