Seite 1 von 1

Python, AJAX und der Internet Explorer :?

Verfasst: Montag 11. September 2006, 08:25
von mc_mak
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