Python, AJAX und der Internet Explorer :?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mc_mak
User
Beiträge: 9
Registriert: Freitag 4. August 2006, 11:17

Hallo,

ich bin dabei eine für meine Verhältnisse komplexe Anwendung mit AJAX zu implementieren. Diese soll bestimmte Einträge in einer Datenbank verwalten. Im Klartext heißt das, dass ich eine DB mit einer Tabelle eintraege habe, auf die ich mit AJAX zugreife und verändern kann. Mit dem FF-Browser funktioniert das problemlos, nur der IE muckt.
Der Ablauf ist so, dass zwei Formularfelder angezeigt werden, in die IDs der Bereich eingegeben werden kann, über den gesucht wird, also beispielsweise die Eintraege 1 bis 4. Hier der html-Code:

<form name="kb_by_block">
<p>Eintraege im Bereich</p>
<p>
von:
<input type="text" id="from_id" size="12" maxlength="14" onkeyup="zeige_eintrag()">
bis:
<input type="text" id="to_id" size="12" maxlength="14" onkeyup="zeige_eintrag()">
</p>
</form>
<p id="eintrag_block"></p>

Die nötigen Javascripts sind:

function zeige_eintraege() {
var from = document.getElementById("from_id").value;
var to = document.getElementById("to_id").value;
var url = "zeige_eintraege.cgi?from=" + from + "&to=" + to;
ajax.update(url, "eintrag_block");
}

function aendere_eintrag(kb_id) {
var given_id = kb_id.toString();
var block_id = "kb_input" + given_id;
var output = "out" + given_id;
var text = document.getElementById(block_id).value;
var url = "ajax_aendere_eintrag.cgi?id=" + given_id + "&text=" + text;
ajax.update(url, output);
}


Außerdem nutze ich das miniajax-Skript, hier anzusehen:
http://www.bigbold.com/snippets/posts/show/2025

Mit dem Aufruf zeige_eintraege wird ein python-Skript aufgerufen, das (und dies funktioniert auch im IE noch) direkt editierbare Felder im entsprechenden Bereich (eintrag_block) erzeugt.
<form name="eintraege">
<input id="eintrag1" size="65" value="Die koennte der Inhalt des ersten Eintrags zum aendern sein" type="text">
<input value="Aendere" onclick="javascript:aendere_Eintrag(1)" type="button">
<div id="out1"></div>
</form>

<form name="eintraege">
<input id="eintrag4" size="65" value="Die koennte der Inhalt des vierte Eintrags zum aendern sein" type="text">
<input value="Aendere" onclick="javascript:aendere_Eintrag(4)" type="button">
<div id="out4"></div>
</form>

Das Problem taucht dann mit dem Aufruf aendere_Eintrag(?) auf.
Das nötige Python-CGI sieht so aus:

import ...

update_query = """
UPDATE eintraege SET eintr = %s WHERE kb_id= %s
"""

cursor = db.cursor()

id_value = cgi.FieldStorage()
eintr_nr = id_value.getvalue("id","0")
eintr_name = id_value.getvalue("text", "0")

cursor.execute(update_query, (eintr_name, eintr_nr))

print "Content-Type: text/html; charset=iso-8859-1"
print

print "Eintrag wurde in <strong>" + eintr_name + "</strong> geändert"

Als Fehlermeldung im IE wird 'Object required' ausgegeben, im FF funktioniert das wie gesagt wunderbar.

Kann mir da jemand helfen?

Viele Grüße,
mcmak
Antworten