# [dojo/dijit] Dialog - Parameterübergabe



## CyrusOne (5. August 2008)

Hallo,

Ich rufe mittels eines Links ein Dijit-Dialog auf.


```
href="javascript:dijit.byId('dialog1').show()"
```

Diesen Dialog möchte/muss ich jetzt einen Parameter mitübergeben, um weitere Datenbank abfragen durchführen zu können.


```
<div class="popup" dojoType="dijit.Dialog" id="dialog1">
	...
</div>
```


Hier die Homepage
Es werden alle Musiker aufgelistet und für jeden Musiker gibt es noch weitere Daten, welche ich in einen Dialog anzeigen möchte.
Statisch habe ich das bei dem Namen "Kern Wolfgang" realisiert.

Kann mir hier vielleicht jemand helfen? 

Lg Cyrus


----------



## Sven Mintel (6. August 2008)

Moin Cyrus,

du könntest bspw. beim  Klick den Dialog um ein eigenes Attribut erweitern(show() verarbeitet leider keine Parameter, soweit ich das sehe):

```
<a href="javascript:dijit.byId('dialog1').show();" onclick="dijit.byId('dialog1').artist='Heinz Quermann';">
```


----------



## CyrusOne (6. August 2008)

Morgen =)

Und dieses Atribut rufe ich dann wie ab im Dialog?

Lg Cyrus


----------



## Sven Mintel (6. August 2008)

Genauso, wie es gesetzt wurde 

```
dijit.byId('dialog1').artist
```


----------



## CyrusOne (6. August 2008)

Leider wird eine Fehlermeldung geworfen, dass dijit.byid('dialog1').artist kein Objekt oder NULL ist!


----------



## Sven Mintel (6. August 2008)

> dijit.*byid*('dialog1').artist


Hast du das so  geschrieben? Das i dort muss gross geschrieben werden.


----------



## CyrusOne (6. August 2008)

Im Source hab ich es groß geschrieben, nur hier im Post nicht, sorry =)


----------



## Sven Mintel (6. August 2008)

Hier mal nen Beispiel, gibt es da auch einen Fehler bei dir?
	
	
	



```
<a href="javascript:dijit.byId('dialog1').show();" onclick="dijit.byId('dialog1').artist='Heinz Quermann';">Heinz</a>
  
  <div class="popup" dojoType="dijit.Dialog" id="dialog1" style="display:none">
    <h1 style="cursor:pointer" onclick="alert(dijit.byId('dialog1').artist);dijit.byId('dialog1').hide()">Klick</h1>
  </div>
```


----------



## CyrusOne (6. August 2008)

Deine Source funktioniert wunderbar!

Ich habe versucht das ganze in einem <script> Tag auszugeben, hierbei hat er anscheinend Probleme!

Aber jetzt funktioniert es, besten dank für deine Hilfe. Du hast mir sehr geholfen. 

Lg Cyrus


----------



## CyrusOne (6. August 2008)

Ok da hätte ich dan doch noch eine Frage 

Wie kann ich dieses Attribut jetzt in PHP weiterverwenden, mein DB Anschluss basiert auf php.

Lg Cyrus

PS.: Sry das ich so Basic Fragen stelle, aber ich hab mit JS bzw mit DOJO noch nie gearbeitet.


----------



## Sven Mintel (7. August 2008)

Das funktioniert etwas anders... da brauchst du  keinen Parameter übergeben, sondern musst das href-Attribut des Dialogs setzen.

Als Pfad halt den Pfad zu deinem PHP-Skript, welches die Daten aus der DB holt und daraus den HTML-Code mit den Infos erstellt und zurückgibt.
Diesen Pfad erweiterst du um den jeweiligen Parameter,...Bsp:


```
<a href="javascript:dijit.byId('dialog1').show();" onclick="dijit.byId('dialog1').href='response.php?artist='+escape(this.innerHTML);">Heinz Quermann</a><br>
  <a href="javascript:dijit.byId('dialog1').show();" onclick="dijit.byId('dialog1').href='response.php?artist='+escape(this.innerHTML);">Klaus Kinski</a><br>
  <a href="javascript:dijit.byId('dialog1').show();" onclick="dijit.byId('dialog1').href='response.php?artist='+escape(this.innerHTML);">Boris Jelzin</a><br>
 
  <div class="popup" dojoType="dijit.Dialog" id="dialog1" style="display:none"></div>
```

...ich bin hier mal davon ausgegangen, dass der Link den Namen enthält(und sonst nichts)...so wie auf deiner Seite.
JS holt also den Namen aus dem Link, hängt ihn an die URL heran und weist sie dem href des Dialogs zu...das wars schon.

Dein PHP-Skript(habs in der URL response.php genannt), kann jetzt mit $_GET['artist'] arbeiten 



> PS.: Sry das ich so Basic Fragen stelle, aber ich hab .... mit DOJO noch nie gearbeitet.



Macht doch nichts, ich bis heute auch noch nicht (es dauert deswegen zuweilen ein wenig, ich muss mich da auch erstmal schlau machen)


----------



## CyrusOne (7. August 2008)

Hallo,

Vorerst mal recht herzlich Dank für deine Mühe.
Ich habe mich jetzt noch mit Ajax-Requests in dojo beschäftigt und bin zum folgenden Ergebniss gekommen.

Ich habe mir eine Funktion geschrieben welche 

einen Ajax-Request an mein PopUp schickt, welcher den "Artist" als GET Parameter enthält.
den PopUp öffnet


```
function showQuickpage(id){
	
       dojo.xhrGet( { 
        
	url: "http://localhost/mv/popup.php?mid="+id, 
        
	handleAs: "text",
        
	timeout: 5000, 
        
	load: function(response, ioArgs) { 
          dojo.byId("quickpage").innerHTML = response;
          return response; // ?
        },
        
	error: function(response, ioArgs) { 
          console.error("HTTP status code: ", ioArgs.xhr.status); 
          return response; 
          }
        });

	dijit.byId("quickpage").show() 
}
```

Soweit ich jetzt gelesen habe könnte man noch den Parameter mittels "content: ..." übergeben, muss ich aber erst noch ausprobieren.

Ich kann jetzt zwar nicht sagen ob meine Methode so sinnvoll und "schön" programmiert ist, aber zumindest weis ich jetzt wie man einen Ajax-Request absetzt =)
Vielleicht kannst du ja deine Meinung dazu Posten.




> ... es dauert deswegen zuweilen ein wenig, ich muss mich da auch erstmal schlau machen


Geht sichtlich etwas schneller bei dir als bei mir 
Woher beziehst du den dein Wissen? 

Lg Cyrus


----------



## Sven Mintel (7. August 2008)

Saubere Lösung 

(Das mit dem Dialog hätte übrigens auch einen AJAX-Request abgesetzt.)



> Woher beziehst du den dein Wissen?



Ich gucke wahrscheinlich wie du in deren Dokumentation nach, was, wie ich gestehen muss, keine rechte Freude ist, da sehr unübersichtlich aufgebaut und spärlich kommentiert


----------



## CyrusOne (7. August 2008)

> ... da sehr unübersichtlich aufgebaut und spärlich kommentiert



Du sagst es, hat mich auch leicht zur Verzweiflung gebracht, vor allem weil ich die Java API gewöhnt bin, und da ist alles genauestens Dokumentiert!


----------

