Arrays aus einer funktion bla(result) auslesen?!
KeF
- javascript
Ich hole mir mit folgender funktion aus ein Array und übergebe das ergebniss an eine weitere funktion. Der rückgabewert ist in result gespeichert. Meine Frage wie kriege ich jetzt die einzelnen Teile aus result raus??
So sieht das script aus:
/**HOLEN**/
function getProjects()
{
HTML_AJAX.call('projectajax','getprojects',replacetest);
}
/** ARRAY AUSLESEN **/
function replacetest(result)
{
/** HIER REIN DAS ER DAS ARRAY AUSLESEN SOLL**/
}
So sieht das Array aus (Im Array ist noch ein Array verschachtelt!):
{"1c48e6ea-3ebf-1326-be58-43c623668d4c":{"name":"Move Mountäin","id":"1c48e6ea-3ebf-1326-be58-43c623668d4c","total_time":"0"},"1e2da54e-05a0-4d3f-26ce-43c6237b9256":{"name":"Setup Booth At Tradeshow","id":"1e2da54e-05a0-4d3f-26ce-43c6237b9256","total_time":"0"},"191d5ef2-d91f-223d-e61d-43c62302f70d":{"name":"Take Over The World","id":"191d5ef2-d91f-223d-e61d-43c62302f70d","total_time":"0"}}
Hi !
So sieht das Array aus (Im Array ist noch ein Array verschachtelt!):
{"1c48e6ea-3ebf-1326-be58-43c623668d4c":{"name":"Move Mountäin","id":"1c48e6ea-3ebf-1326-be58-43c623668d4c","total_time":"0"},"1e2da54e-05a0-4d3f-26ce-43c6237b9256":{"name":"Setup Booth At Tradeshow","id":"1e2da54e-05a0-4d3f-26ce-43c6237b9256","total_time":"0"},"191d5ef2-d91f-223d-e61d-43c62302f70d":{"name":"Take Over The World","id":"191d5ef2-d91f-223d-e61d-43c62302f70d","total_time":"0"}}
Auslesen eines verschachtelten Arrays:
<HTML>
<BODY>
<SCRIPT>
var a=new Array()
a[0]=new Array();
a[0][0]="erstes Element von a[0]";
a[0][1]="zweites Element von a[0]";
a[1]=new Array();
a[1][0]="erstes Element von a[1]";
a[1][1]="zweites Element von a[1]";
for (var i=0; i < a.length; i++) {
for (var j=0; j < a[i].length; j++) {
alert("a["+i+"]["+j+"]="+a[i][j]);
}
}
</SCRIPT>
</BODY>
</HTML>
Jedes Element von a hat ein Array als Inhalt. Dadurch wird ein zweidimensionales Array erzeugt. Mit der length-Angabe wird angegeben, wie groß a insgesamt und wie groß die Arrays innerhalb a sind.
Gruß
Hans
Hell-O!
Meine Frage wie kriege ich jetzt die einzelnen Teile aus result raus??
Indem du auf die einzelnen Elemente des Arrays zugreifst, wie es im SELFHTML-Kapitel zum Array-Objekt beschrieben ist.
So sieht das Array aus (Im Array ist noch ein Array verschachtelt!):
Handelt es sich eventuell um ein assoziatives Array? Prinzipiell sollte der Zugriff via result[id][Feldname] möglich sein. Vielleicht zeigst du uns mal, wie result zusammengebaut wird.
Siechfred
Hi ok, hab immer [objekt Objekt] zurück bekommen und nicht den beinhalteten wert. Hab das jetzt mit toSource() gelöst.
Noch eine frage, ist es möglich ein PHP array in ein JavaScript array zu 'transformieren' bzw. so auszulesen dass JavaScript daraus ein JavaScript Array macht?
@Sigfried, hier das script:
<script type="text/javascript" src="http://192.168.221.74/workspace/SugarSuite3.5.1/ajax_index.php?module=Project&client=all"></script>
<!-- Eigene Funktionen bzw. Funktionen ansprechen -->
<script type="text/javascript">
<!--
HTML_AJAX.defaultServerUrl='http://192.168.221.74/workspace/SugarSuite3.5.1/ajax_index.php?module=Project';
HTML_AJAX.defaultEncoding = 'JSON';
function getProjects()
{
HTML_AJAX.call('projectajax','getprojects',replacetest);
}
function replacetest(result)
{
/**document.getElementById('projekte').innerHTML=result;**/
var a=new Object(result);b=(a.toSource ());
alert(b);
}
-->
</script>
</head>
<body onload="getProjects ()">
<table border="1">
<TR>
<TD valign="top">
<div id="projekte">
</div>
</TD>
</TR>
</table>
</body>
</html>
gruss KeF,
aus https://forum.selfhtml.org/?t=127470&m=822788
So sieht das Array aus (Im Array ist noch ein Array verschachtelt!):
{"1c48e6ea-3ebf-1326-be58-43c623668d4c":{"name":"Move Mountäin","id":"1c48e6ea-3ebf-1326-be58-43c623668d4c","total_time":"0"},"1e2da54e-05a0-4d3f-26ce-43c6237b9256":{"name":"Setup Booth At Tradeshow","id":"1e2da54e-05a0-4d3f-26ce-43c6237b9256","total_time":"0"},"191d5ef2-d91f-223d-e61d-43c62302f70d":{"name":"Take Over The World","id":"191d5ef2-d91f-223d-e61d-43c62302f70d","total_time":"0"}}
es handelt sich hierbei nicht um ein array, sondern
um ein astreines [Object]-objekt in literal-notation.
formatiert ist dieses konstrukt leichter lesbar:
~~~JavaScript
{
"1c48e6ea-3ebf-1326-be58-43c623668d4c": {
"name" : "Move Mountäin",
"id" : "1c48e6ea-3ebf-1326-be58-43c623668d4c",
"total_time": "0"
},
"1e2da54e-05a0-4d3f-26ce-43c6237b9256": {
"name" : "Setup Booth At Tradeshow",
"id" : "1e2da54e-05a0-4d3f-26ce-43c6237b9256",
"total_time": "0"
},
"191d5ef2-d91f-223d-e61d-43c62302f70d": {
"name" : "Take Over The World",
"id" : "191d5ef2-d91f-223d-e61d-43c62302f70d",
"total_time": "0"
}
}
die strenge quotierung sowohl aller eigenschaftswerte
als auch aller eigenschaftsnahmen weisst dieses objekt
als ein [JSON](http://json.org)-objekt aus.
> HTML\_AJAX.defaultEncoding = 'JSON';
aus <https://forum.selfhtml.org/?t=127470&m=822817>
bestaetigt diese vermutung.
auf Douglas Crockfords seiten finden sich links zu den
in den unterschiedlichsten sprachen implementierten
bibliotheken zum erzeugen bzw. parsen/evaluieren solcher
objektstrukturen.
die [JSON implementierung fuer JavaScript](http://www.json.org/json.js) sieht dafuer die
methoden "JSON.stringify" bzw. "JSON.parse" vor.
Du verwendest sicherlich irgendeine bibliothek, die Dir
den "http-request/response" vorgang kapselt.
ich vermute, dass Dir diese bibliothek schon die umwandlung
von der literalnotation(text/String) in ein JavaScript-objekt
abnimmt, denn du schriebst:
> Hi ok, hab immer [objekt Objekt] zurück bekommen und nicht
> den beinhalteten wert. Hab das jetzt mit toSource() gelöst.
deswegen ist "toSource()" auch nicht gerade die ideale
loesung fuer Dein problem. Du hast schon ein objekt; auf
dem willst Du arbeiten. "[object].toSource()" liefert Dir
doch nur wieder einen String zurueck, und der ist dann
noch nicht mal JSON-konform. ausserdem steht diese methode
nativ nur in gecko-basierten browsern zur verfuegung.
wenn Du ein richtiges array benoetigst, musst Du dafuer
sorge tragen, dass der server-prozess ein entsprechendes
JSON-pendant ausliefert. als bsp. mal die oben aufgefuehrte
struktur als array-literal:
~~~JavaScript
[
{
"name" : "Move Mountäin",
"id" : "1c48e6ea-3ebf-1326-be58-43c623668d4c",
"total_time": "0"
},
{
"name" : "Setup Booth At Tradeshow",
"id" : "1e2da54e-05a0-4d3f-26ce-43c6237b9256",
"total_time": "0"
},
{
"name" : "Take Over The World",
"id" : "191d5ef2-d91f-223d-e61d-43c62302f70d",
"total_time": "0"
}
]
so long - peterS. - pseliger@gmx.net
Hell-O!
[...]
Peter, man liest dich zwar selten, aber wenn, dann stets so fundiert, dass man einfach nur auf hilfreich klicken kann. Das musste ich jetzt einfach mal loswerden :-)
Siechfred
gruss Siechfred
...
Peter, man liest dich zwar selten, aber wenn, dann stets so fundiert,
Ihr habt doch noch molily und Struppi - ich wuensche mir oft die zeit,
um auch nur in die naehe deren schreibaufkommens zu gelangen.
dass man einfach nur auf hilfreich klicken kann. Das musste ich jetzt
einfach mal loswerden :-)
ich freu' mich natuerlich ueber Deine streicheleinheit.
danke fuer die blumen - so long - peterS.
Hallo,
So sieht das Array aus (Im Array ist noch ein Array verschachtelt!):
{"1c48e6ea-3ebf-1326-be58-43c623668d4c":{"name":"Move Mountäin","id":"1c48e6ea-3ebf-1326-be58-43c623668d4c","total_time":"0"},"1e2da54e-05a0-4d3f-26ce-43c6237b9256":{"name":"Setup Booth At Tradeshow","id":"1e2da54e-05a0-4d3f-26ce-43c6237b9256","total_time":"0"},"191d5ef2-d91f-223d-e61d-43c62302f70d":{"name":"Take Over The World","id":"191d5ef2-d91f-223d-e61d-43c62302f70d","total_time":"0"}}
Wenn du mit JSON operierst, solltest du schon die Grundlagen von JSON verstanden haben.
Das ist kein Array, sondern ein Object. Es beinhaltet drei weitere Object-Objekte, welche ihrerseits jeweils drei String-Objekte besitzen.
Die Unterobjects des äußeren Objects kannst du - aufgrund ihrer wohl wechselnden Namen - nur mit einer for-in-Schleife durchlaufen. Auf die Eigenschaften der inneren Objekte (also die String-Objekte) kannst du einfach so zugreifen, wie du in JavaScript auf alle anderen Unterobjekte bzw. Eigenschaften ebenfalls zugreifst: über objektname.eigenschaft. Hier sind dir die Namen ja bekannt (name, id, total_time).
Mathias