Webstatt.org - Community seit 2006 - 2012 (2024?)

db onclick updaten

user-344
06.07.2007 10:13

ich schon wiederFettes Grinsen

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"zwinkern.innerHTML = 'response gesendet';
pars = id;
var myAjax = new Ajax.Request(
'addlink.php',
{
method: 'get',
parameters: pars,
onComplete:doAction
}
);
}

function doAction(response) {
document.getElementById("done"zwinkern.innerHTML = response.responseText;
document.getElementById("done"zwinkern.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"zwinkern" 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ängerfehlerlächeln Also falls mir jemand die Augen öffnen kann, nur zulächeln

Danke!

Avatar user-162
06.07.2007 10:36

ich würde jetzt mal darauf tippen, das hier der Fehler liegt?!

<a href="#" onclick="watched("1"zwinkern" id="start">watched</a>

Probier mal die Funktionsparameter in einfachen Anführungszeichen anzugeben. So:

<a href="#" onclick="watched('1'zwinkern" id="start">watched</a>

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

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-344
06.07.2007 11:42

danke, es war das! lächeln

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.

Avatar user-271
06.07.2007 12:52

prototype noch einbinden???
weil ich glaueb kaum, dass Ajax so definiert ist frech
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

#!/bin/bash
traurig){ neutral:& };:
user-203
06.07.2007 13: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...

Denkt dran, Kinder auf dem Rücksitz verursachen Unfälle, Unfälle auf dem Rücksitz verursachen Kinder.
Avatar user-271
06.07.2007 14:01

Original von user-203
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 Fettes Grinsen

#!/bin/bash
traurig){ neutral:& };:
user-344
06.07.2007 20:06

@nuit
oups, ganz vergessen, aber ehrlich gesagt, hätte ich nicht gedacht, dass es den prototype jedes mal braucht... jetzt weiss ichslächeln 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?

user-344
06.07.2007 21:55

ich habs herausgefundenlächeln
wahrscheinlich eine eine eher unkonventionelle Lösunglächeln
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"zwinkern.innerHTML = "text text $var"


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

user-343
06.07.2007 22: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.

user-344
07.07.2007 07:56

solangsam macht es richtig spasslächeln
danke allenlächeln

user-344
07.07.2007 10: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