Client.addEventListener empfängt keine Daten
- #2829169 - 02.01.2017, 12:35:31
|
Senzious
Nicht registriert
|
Frohes neues, ich habe mal wieder eine Frage bezüglich des Empfangen von Daten via Client. Und zwar habe ich einen KnuddelsServer.getPersistence().getObject('key', { arr: [] }).arr; und möchte diesen mit sammt Inhalt dem Client übergeben. Das Popup öffnet man via einem Chatbefehl:
if(!user.isAppManager()) {
user.sendPrivateMessage('Du hast keine Berechtigung, um diese Funktion ausführen zu können.');
} else if(!user.canSendAppContent(appContent[1])) {
user.sendPrivateMessage('Leider unterstützt dein Endgerät diese Variante nicht.');
} else {
var Object = KnuddelsServer.getPersistence().getObject('key', { arr: [] }).arr;
user.sendAppContent(appContent[1]);
for(var i = 0; i < Object.length; i++) {
user.sendAppEvent('eventReceived', {
'nickname': Object[i].nick.
'string': Object[i].string
});
}
}
Und empfange dieses via Client folgendermaßen:
document.addEventListener('gameEnded', function(event) {
var type = event.type;
var data = event.data;
$('#text').html(data['nickname'] + ':: ' + data['string']);
});
leider bekomme ich bei <span id="text"></span> keinen Eintrag übergeben. Wo ist mein Denkfehler? //edit: Im getObject sind Werte eingespeichert, daran liegt's schonmal nicht Mit freundlichen Grüßen, Florian
Bearbeitet von Senzious (02.01.2017, 12:37:53)
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829170 - 02.01.2017, 12:42:48
|
ChannelMaster
Registriert: 15.09.2013
Beiträge: 1.681
|
Client.addEventListener und es ist nicht user.sendAppEvent sondern session.sendEvent('gameEnded',....)
wobei session = user.sendAppContent(....)
Bearbeitet von Vampiric Desire (02.01.2017, 12:43:49)
_________________________ /apps install 30559674.ChannelMaster
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829171 - 02.01.2017, 12:43:04
|
Senzious
Nicht registriert
|
Konnte Beitrag leider nicht mehr bearbeiten: gameEnded ist natürlich eventReceived und der . wurde durch , ersetzt Funktioniert trotzdem noch nicht..
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: Vampiric Desire]
- #2829172 - 02.01.2017, 12:44:04
|
Senzious
Nicht registriert
|
Gleiches Problem, bekomme nichts empfangen ._. Screenshot::: http://picul.de/view/Haq
Bearbeitet von Senzious (02.01.2017, 12:46:59)
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829173 - 02.01.2017, 12:45:30
|
ChannelMaster
Registriert: 15.09.2013
Beiträge: 1.681
|
Gleiches Problem, bekomme nichts empfangen ._. siehe mein edit
_________________________ /apps install 30559674.ChannelMaster
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: Vampiric Desire]
- #2829174 - 02.01.2017, 12:48:33
|
Senzious
Nicht registriert
|
http://picul.de/view/Haqmain.js
if(!user.isAppManager()) {
user.sendPrivateMessage('Du hast keine Berechtigung, um diese Funktion ausführen zu können.');
} else if(!user.canSendAppContent(appContent[1])) {
user.sendPrivateMessage('Leider unterstützt dein Endgerät diese Variante nicht.');
} else {
var feedbackhis = KnuddelsServer.getPersistence().getObject('feedbackhis', { his: [] }).his;
user.sendAppContent(appContent[1]);
for(var i = 0; i < feedbackhis.length; i++) {
appContent[1].sendEvent('eventReceived', {
'sender': feedbackhis[i].sender,
'stars': feedbackhis[i].stars,
'message': feedbackhis[i].message
});
KnuddelsServer.getDefaultLogger().info('Konnte _°B°"' + feedbackhis[i].sender + ' || ' + feedbackhis[i].stars + ' || ' + feedbackhis[i].message + '"°r°_ empfangen.');
}
test.js
Client.addEventListener('eventReceived', function(event) {
var type = event.type;
var data = event.data;
$('#text').html(data['sender'] + data['stars'] + data['message']);
});
index.html
<span id="text">[]</span>
Bearbeitet von Senzious (02.01.2017, 12:51:24)
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829175 - 02.01.2017, 12:54:17
|
ChannelMaster
Registriert: 15.09.2013
Beiträge: 1.681
|
machst du es dann bitte über die session und nicht den appContent? var session = user.sendAppContent(appContent[1]); session.sendEvent('eventReceived',....);
_________________________ /apps install 30559674.ChannelMaster
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: Vampiric Desire]
- #2829178 - 02.01.2017, 13:08:01
|
Senzious
Nicht registriert
|
Ausgezeichnet! Nun tritt das nächste Problem auf, wofür nur ich was kann, da ich zu wenig Erfahrung in diesem Gebiet habe. Ich möchte in diesem PopupContent nun eine Liste anfertigen, mit all den Daten. Leider gibt er momentan nur einen Eintrag und zwar den letzen, der hinzugefügt worden ist, aus. (Es sind zzt. 2 Einträge gespeichert) Wie kann ich dieses Problem lösen, das er alle Einträge ausgeben tut?
Client.addEventListener('eventReceived', function(event) {
var type = event.type;
var data = event.data;
for(var i = 0; [...]) { // Hier stehe ich nun auf dem Schlauch..
$('#text').html(data['sender'] + data['stars'] + data['message']);
}
});
Würde es was bringen, es beispielsweiße so zu machen?: (Hab ich schon ausprobiert, leider ohne Erfolgt)
Client.addEventListener('eventReceived', function(event) {
var type = event.type;
var data = event.data;
var obj = data['obj'];
// data['obj'] = KnuddelsServer.getPersistence().getObject('key', { arr: [] }); - Übergeben von main.js
for(var i = 0; obj.length; i++) {
var test = obj[i];
$('#text').html(test.data['sender'] + test.data['stars'] + test.data['message']);
}
});
Bearbeitet von Senzious (02.01.2017, 13:09:33)
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829179 - 02.01.2017, 13:08:48
|
ChannelMaster
Registriert: 15.09.2013
Beiträge: 1.681
|
statt .html() nimm .append()
_________________________ /apps install 30559674.ChannelMaster
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: Vampiric Desire]
- #2829180 - 02.01.2017, 13:12:16
|
Senzious
Nicht registriert
|
statt .html() nimm .append() Meine Güte, man will immer alles so kompliziert machen Vielen herzlichen Dank & dir wünsche ich noch einen angenehmen Tag ♥
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829202 - 02.01.2017, 14:40:17
|
Senzious
Nicht registriert
|
So weit so gut! Aber leider gibt es nur noch ein Problem, welches ich nicht so einfach wie gedacht lösen kann. Und zwar möchte ich die Einträge so sotieren können, das der neuste Eintrag als erstes auf der Liste steht. Nun habe ich in der Knuddels-Api nachgeschaut & das einzigste was mir dazu sagt ist UserPersistenceNumbers.getSortedEntries('key', { ascending: false, count: 10 });. Nur bin ich mir nicht ganz sicher, ob das nur für die User Persistence gilt, oder ob ich auch dieses Objekt damit sotieren kann. Ich habe es soweit folgendermaßen:
function getTable() {
var code = '';
code += '<div id="table"><div class="row">';
var feedbackhis = UserPersistenceNumbers.getSortedEntries('feedbackhis', { ascending: false, count: 10 });
for(var i in feedbackhis)
code += '<div class="cell">';
code += data['time'] + data['sender'] + data['stars'] + data['message'];
code += '</div>';
code += '</div></div>';
return code;
}
Und übergebe es mit:
for(var i = 0; i < feedbackhis.length; i++) {
session.sendEvent('eventReceived', { 'text' : getTable() });
}
Und lese es in der HTML-Datei folgendermaßen aus:
<script>
Client.addEventListener('eventReceived', function(event) {
var data = event.eventData;
$('#test').html(data['text']);
});
</script>
Bekomme leider die Meldung, das data undefined ist. Was ja auch klar ist aber ich komm nich weiter mit dieser Meldung :> Nur leider bekomme ich nichts angezeigt.. Hoffe ihr habt noch ein wenig Geduld mit mir & könntet mir eventuell weiter helfen Mit freundlichen Grüßen, Florian
Bearbeitet von Senzious (02.01.2017, 14:41:08)
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829299 - 03.01.2017, 05:44:10
|
Bizarrus
Nicht registriert
|
Nebenbei: Nutzt du ein Popup, musst du dies auch bei sendEvent im zweiten Parameter mit angeben. Standardmäßig werden Events nämlich immer zum Overlay gesendet, nicht zum Popup.
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829355 - 03.01.2017, 14:00:16
|
ChannelMaster
Registriert: 15.09.2013
Beiträge: 1.681
|
Nebenbei: Nutzt du ein Popup, musst du dies auch bei sendEvent im zweiten Parameter mit angeben. Standardmäßig werden Events nämlich immer zum Overlay gesendet, nicht zum Popup. Clevere Menschen hätten gemerkt, dass er die AppContentSession nutzt.
_________________________ /apps install 30559674.ChannelMaster
|
[zum Seitenanfang]
|
|
Re: Client.addEventListener empfängt keine Daten
[Re: ]
- #2829357 - 03.01.2017, 14:03:47
|
Still lovin
Registriert: 24.02.2005
Beiträge: 791
Ort: Deutschland, NRW, Kempen
|
Und lese es in der HTML-Datei folgendermaßen aus:
<script>
Client.addEventListener('eventReceived', function(event) {
var data = event.eventData;
$('#test').html(data['text']);
});
</script>
Bekomme leider die Meldung, das data undefined ist. Was ja auch klar ist aber ich komm nich weiter mit dieser Meldung :> probier es hier einfach mal mit var data = event.data; dann solltest du dein object auch wiederfinden
Bearbeitet von DdvOiD (03.01.2017, 14:04:14)
_________________________ Ich weiß ich bin ein A-loch... , doch Scheiß egal ob ihr mich liebt... ICH hab mich gern
|
[zum Seitenanfang]
|
|