KeF: Arrays aus einer funktion bla(result) auslesen?!

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"}}

  1. 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

  2. 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

    1. 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>

      1. 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&auml;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&auml;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&auml;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

        --
        "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
        Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford
        ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]
        1. 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

          1. 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.

  3. Hallo,

    So sieht das Array aus (Im Array ist noch ein Array verschachtelt!):

    {"1c48e6ea-3ebf-1326-be58-43c623668d4c":{"name":"Move Mount&auml;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