Willkommen in der Webstatt Zum Webstatt Blog und Stories
web4 am 06.07.07 12:13

ich schon wieder:D

ajax macht spass, aber es ist zum verzweifeln... an so kleinen funktiönchen verbringe ich stunden!

Ich versuche gerade, die DB onclick "up zu daten".

Das habe ich bereits.. aber er bingt weder einen Fehler noch funktioniert es. Sieht jemand wieso?

watched.js
function watched(id) {
document.getElementById("done").innerHTML = 'response gesendet';
pars = id;
var myAjax = new Ajax.Request(
'addlink.php',
{
method: 'get',
parameters: pars,
onComplete:doAction
}
);
}

function doAction(response) {
document.getElementById("done").innerHTML = response.responseText;
document.getElementById("done").innerHTML = 'response erhalten';
}


das html sieht so aus (ist aus meiner sicht richtig)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>edit onclick</title>
<script language="JavaScript" type="text/javascript" src="watched.js"></script>
</head>
<body>
<h1>edit onclick</h1>
<a href="#" onclick="watched("1")" id="start">watched</a>
<div id="done"> </div>
</body>
</html>


im Php wird dann die DB geupdated... das ist kein Problem.

Ich muss irgendetwas im JS vergessen haben... er gibt gar nichts aus. Wahrscheinlich ist es ein Anfängerfehler:) Also falls mir jemand die Augen öffnen kann, nur zu:)

Danke!

netcup.de Warum gibt es hier Werbung?
der_nic der_nic am 06.07.07 12:36

ich würde jetzt mal darauf tippen, das hier der Fehler liegt?!
<a href="#" onclick="watched("1")" id="start">watched</a>

Probier mal die Funktionsparameter in einfachen Anführungszeichen anzugeben. So:
<a href="#" onclick="watched('1')" id="start">watched</a>

Weil du streng genommen das onclick-Attribut wieder schliesst nach dem doppelten Anführungszeichen bei dem Parameter.

web4 am 06.07.07 13:42

danke, es war das! :)

jetzt meint er "'Ajax' nicht definiert"... ist es aber eigentlich...werd mich mal auf Fehlersuche begeben müssen.

Falls jemand gerade einen Fehler sieht... nur zu.

nuit nuit am 06.07.07 14:52

prototype noch einbinden???
weil ich glaueb kaum, dass Ajax so definiert ist :P
oder mootools oer was auch immer für eine lib du verwendest...prototype wars ja glaube ich

dann sollte der ajax kram auch gehen


aber vorsicht...verwende nicht zuviel ajax,sonst können alle ohne js die seite nichtmehr verwenden

Johannes am 06.07.07 15:39

Ressourcensparender wäre es, wenn du einfach ein XMLHttpRequest-Objekt bzw beim IE ActiveXObject erstellst und damit die Daten absendest. Ist in wenigen Zeilen Code getan und es gibt mittlerweile unendlich viele gute Anleitungen im Internet, wie das funktioniert.

So libs wie prototype sind ja ganz praktisch, aber man brauch doch in den meisten fällen nur eine einzige funktion...

nuit nuit am 06.07.07 16:01

Quote
Original von Johannes
Ressourcensparender wäre es, wenn du einfach ein XMLHttpRequest-Objekt bzw beim IE ActiveXObject erstellst und damit die Daten absendest. Ist in wenigen Zeilen Code getan und es gibt mittlerweile unendlich viele gute Anleitungen im Internet, wie das funktioniert.

So libs wie prototype sind ja ganz praktisch, aber man brauch doch in den meisten fällen nur eine einzige funktion...

naja prototype ist viel zu überlade, ich tendiere immo zu mootools, ist ziemlich klein und hat eigentlichauch alles drin, ohne effekte, odernur die wichtigste effekte :D

web4 am 06.07.07 22:06

@nuit
oups, ganz vergessen, aber ehrlich gesagt, hätte ich nicht gedacht, dass es den prototype jedes mal braucht... jetzt weiss ichs:) danke!

@Johannes
sobald ich mit der materie vertrauter bin, bin ich gerne für solche unternehmen zu haben. im bin ich schon mit dem prototype.js alleine genug gefordert. danke trotzdem!

Es funktioniert nun fast!
Ich möchte jetzt jedoch, dass sich das div, welches mit einer id gekennzeichnet ist, verändert.

function doAction(response) {
var id = response.responseText;
document.getElementById(id).innerHTML = id;
}


So funktioniert es aber nicht. Wenn ich id mit einer id ersetze, dann funktionert es, jedoch natürlich im falschen div.

Wie schreibt man das
document.getElementById(id).innerHTML = id;
richtig?

Hat jemand eine Vorschlag?

web4 am 06.07.07 23:55

ich habs herausgefunden:)
wahrscheinlich eine eine eher unkonventionelle Lösung:)
document.getElementById("" + id)

Jetzt habe ich nur noch eine letzte Syntaxfrage:
Wie kann ich dem innerhalb des inner.HTMLs eine JavaScript Variable ausdrücken. Sprich:
document.getElementById("whatever").innerHTML = "text text $var"

Ich habe schon praktisch alles versucht... oder habt ihr per Zufall gute Tutorials über JS-Syntax?

Wasili am 07.07.07 00:13

var = "string" + var + "string"

Edit: Hast ja selbst die Lösung ^^ Wenn auch unbewusst:

"" + id
Du knüpfst an einen leeren String nen Wert von id.

web4 am 07.07.07 09:56

solangsam macht es richtig spass:)
danke allen:)

web4 am 07.07.07 12:21

ich dachte schon ich habs geschafft, jedoch schaff ich es nicht das wahrscheinlich letzte problem zu lösen...

und zwar:
im PHP Skript wird immer die DB ausgelesen und je nach dem ob eine 1 oder eine 0 in der Spalte steht, das dem JS übermittelt. Jetzt ist es so, dass wenn ich die Funktion ausführe, das Ganze in einer endlosschleife endet. Sprich:
klick -> php schreibt 1 -> JS sendet an PHP -> PHP schreibt 0 -> JS sendet an PHP -> PHP schreibt 1....

lange Rede kurzer Sinn. Wie kann ich die Funktion:
function watched(id) {
pars = id;
var myAjax = new Ajax.Request(
'watched.php?id='+ id,
{
method: 'get',
parameters: pars,
onComplete:doAction
}
);
}


nur einmal pro Klick ausführen? Braucht es dazu überhaupt einen Ajax-Request?
Versteht ihr was ich meine?

gruss

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt