AJAX Problem / XMLHttpRequest

Ja, also flexibel in der Hinsicht, dass es verschiedenartige Requests oder mehrere gleichzeitig durch de gleiche aufrufende Seite zulässt ist es wirklich nicht, aber ich glaube das wäre für meinen Zweck zu viel...

Wie vielleicht schon gemerkt ist JavaScript nicht mein Spezialgebiet. In php mache ich mehr mit Objekten...

In welcher Hinsicht möchtest Du (könnte man) das flexibler gestalten? Ich will kein universelles Toolkit für Manipulationen... diese Replacements über JavaScript (welches ich im Frontendbereich möglichst garnicht verwenden will) sind für eine Backend-Seite sehr nützlich...
 
th23 hat gesagt.:
In welcher Hinsicht möchtest Du (könnte man) das flexibler gestalten?

Naja... es wäre doch nicht schlecht, wenn du beliebig viele Objekte gleichzeitig erzeugen könntest.
Jedes könnte seine eigenen Eigenschaften haben, und auch seine eigenen Methoden, was dir alle Optionen offenhält.

Du brauchst den Objekten ja erstmal nur die von dir benötigten Eigenschaften zu geben... aber du hast dann immer die Möglichkeit, dies mit ein paar Codeschnipseln zu erweitern(und glaub mir, das wirst du sehr schnell wollen:-))

Abgesehen davon wird dein Code dadurch weitaus übersichtlicher.

Was man mit XMLHttpRequest so alles machen kann, lässt sich ja bei gmail gut beobachten... warum nicht auch selbst machen:)
 
Ok, ist sicher für die Zukunft eine nützliche Erweiterung...

Mal sehen, ob Dich richtig verstehe: Die Funktionen packe ich alle in ein Objekt (muss erstmal schaue, wie das in JavaScript geht) also eine Art Klasse. Mit dem ersten Button rufe ich dann diese Klasse auf (oder schon bei Aufruf des Skripts) für jedes Objekt in der Seite, dass manipulierbar sein soll.

Was aber jetzt, wenn sich wie bei mir das Objekt selbst ändert... der Button ist weg und es ist ein Eingabefeld? Dann ist die dem ursprünglichen Button gehörende Klasse doch mit "untergegangen", oder?

Gibts zu so einem Code, wie Du ihn Dir vorstellst passende Beispiele?

Anyway, sehr interessanter Gedankengang,
Thorsten
 
th23 hat gesagt.:
Was aber jetzt, wenn sich wie bei mir das Objekt selbst ändert... der Button ist weg und es ist ein Eingabefeld? Dann ist die dem ursprünglichen Button gehörende Klasse doch mit "untergegangen", oder?

Nö... die Objekte sind solange vorhanden bist du sie selbst löschst(oder das Dokument neu lädst).

Der Button(o.ä) ist ja bei der Sache nicht das Objekt, du erstellst dein eigenes.
Den Button(oder halt das input) kannst du diesem Objekt als Eigenschaft zuordnen...und der Request selbst ist auch eine Eigenschaft dieses Objektes.


Zwecks Beispiel.... ich werd mal sehen, dass ich was zurechtmache, weiss aber nicht, obs noch heute was wird.
 
Sven Mintel hat gesagt.:
Nö... die Objekte sind solange vorhanden bist du sie selbst löschst(oder das Dokument neu lädst).

Ok, das aber - wenn ich jetzt mal rein objektorientiert denke - doch nur, wenn ich das Objekt quasi im JSCode beim Seitenladen aufrufe (dann ist das Objekt Child der Seite), lade ich es erst beim Klick auf den Button ist das Objekt Child vom Button (und müsste weg sein, wenn der Button weg ist...ansonsten könnte ich es zumindest nicht mehr ansprechen, weil ja das ParentObjekt Button fehlt) oder denke ich jetzt (schon wieder) falsch?

Sven Mintel hat gesagt.:
Zwecks Beispiel.... ich werd mal sehen, dass ich was zurechtmache, weiss aber nicht, obs noch heute was wird.

Keine Eile - mein Projekt ist ganz am Anfang - wäre schon supernett wenn Du Dir überhaupt die Zeit nimmst :-)

Gruß
Thorsten

edit: Hab den Status schon mal auf erledigt gesetzt, weil das ursprüngliche Anliegen ja geklärt ist...bin aber immer an Verbesserungen interessiert ;)
 
Zuletzt bearbeitet:
Nö, so ein Objekt ist nicht von irgendwelchen Elementobjekten abhängig.
Hier mal nen Beispielcode zum herumprobieren;)
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
prefix='obj_';

//Das Objekt 
function Objekt(objElm)
{
  this.obj          = objElm;
  this.obj.value    = 'Button:'+this.obj.id;
  this.obj.disabled = true;
  this.name         = prefix+objElm.id;  
  this.obj.enabled  = false;
  this.addBtns();
  this.str='';
}

  // ein paar Buttons entfernen
Objekt.prototype.deleteBtn=function(delBtn)
{
  this.str  = 'Wie man sieht, ist das Objekt noch da, der Button jedoch nicht\n\n';
  this.obj.parentNode.removeChild(delBtn);
  this.obj.parentNode.removeChild(this.obj);
  delete(this.obj)
}

  //Objektinformationen anzeigen
Objekt.prototype.info=function()
{
  this.out=this.str;
  this.out+='\nName des Objektes: '+ this.name;
  this.out+='\nTyp des Buttons: '+ typeof this.obj;
  alert(this.out);
}

  //2 Buttons erzeugen zum Löschen und Objektinfo anzeigen
Objekt.prototype.addBtns=function()
{
  this.btn1 = document.createElement('input');
  this.btn1.type='button';
  this.btn1.value="objektinfo";
  this.btn1.onclick=new Function('f',this.name+'.info()');
  this.obj.parentNode.appendChild(this.btn1);
  
  this.btn2 = document.createElement('input');
  this.btn2.type='button';
  this.btn2.value="button löschen";
  this.btn2.onclick=new Function('f',this.name+'.deleteBtn(this)');
  this.obj.parentNode.appendChild(this.btn2);
}

  //Objekt initialisieren
function objekt_erzeugen(objBtn)
{
  eval(prefix + objBtn.id +'=new Objekt(objBtn)');
}
//-->
</script>
</head>
<body>
<div><input id="Button1" type="button" onclick="objekt_erzeugen(this)"value="objekt erzeugen"></div>
<div><input id="Button2" type="button" onclick="objekt_erzeugen(this)"value="objekt erzeugen"></div>
<div><input id="Button3" type="button" onclick="objekt_erzeugen(this)"value="objekt erzeugen"></div>
</body>
</html>

Test

Da jedes Objekt einen eindeutigen Namen hat(Prefix+ID des Buttons), kommen sie sich nicht in die Quere.
Über den Namen des Objektes kannst du jederzeit seinen Inhalt abfragen und seine Methoden aufrufen. Der Button, auf den man geklickt hat, bewirkte nur das Erstellen des Objektes und ist auch eine Eigenschaft des Objektes, bis er gelöscht wird.
Abhängig ist das Objekt von ihm aber nicht.
 
Ok, nochmal danke für die vielen Tips / Hinweise... ich nehme diesen Vorschlag mal auf die ToDo Liste für eine spätere Version. Ist momentan nur Backend Bereich und den habe ich gerade fast fertig... da will ich das jetzt nicht gleich wieder umschmeissen...

Aber wie gesagt: Das nehme ich mir nochmal vor...spätestens wenn ich AJAX auch im FrontEnd Bereich einsetze :-)
 
Zurück