Visualizzazione dei risultati da 1 a 8 su 8

Discussione: ritornare array a JS

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378

    ritornare array a JS

    ciao, sto provando a ritornare un array da PHP a JS. Devo restituire un array di nomi e mi pare di ver capito che da PHP ritorno una stringa che raprpesenta un array e in JS converto la stringa in un array... giusto ??

    allora da PHP ritorno:

    Codice PHP:
        echo('var data = Array("');
        echo(
    $a);
        echo(
    '","');
        echo(
    $b);
        echo(
    ")"); 
    e in JS devo convertire l'array con EVAL...

    Codice PHP:
        function myHandler() {
        if (
    myRequest.readyState == && myRequest.status == 200) {
            
    document.getElementById("risultato");
            var 
    arr = new Array();
            
    arr = eval(myRequest.responseText);
            
    e.innerHTML arr[0];
            }
        } 
    ..come potete immaginare non funziona... qulche idea !?!? grazie a tutti!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    No, devi restituire una stringa con i campi separati da un carattere particolare (ad esempio | ) e poi splittarla:

    echo($a);
    echo('|');
    echo($b);
    echo('|');
    echo($c);



    arr = myRequest.responseText.split("|");

    Non capisco pero' cosa te ne faccia di assegnare un array javascript ad un contenitore nella pagina... :master: non ha alcun significato

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Puoi anche usare l'Eval, ma in effetti la soluzione di br1 è più semplice.
    Codice PHP:
    echo('data = Array("');
        echo(
    $a);
        echo(
    '","');
        echo(
    $b);
        echo(
    ")"); 
    Javascript:
    Codice PHP:
    function myHandler() {
        if (
    myRequest.readyState == && myRequest.status == 200) {
            
    document.getElementById("risultato");
            var 
    data;
            eval(
    myRequest.responseText);
            
    e.innerHTML data[0];
            }
        } 

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    ...non posso ritornare semplicemente una stringa perchè devrei restituire una array di array... ora sto provando con uno solo per capire come funziona....

  5. #5
    Non c'è problema, crei una stringa del tipo

    DD#AA#DD|FF#CC#VV|DD#RR#RR

    poi fai split(|) per ottenere il primo array, poi, su ogni elemento, split(#) per ottenere l'array interno.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    ho provato con le modifiche che hai aggiunto ma non funziona comunque, non stampa il primo elemento dell'array....

    è giusta la parte PHP ?? l'ho semplificata al massimo....

    Codice PHP:
    <?php

      
    echo('data = Array("');
      echo(
    "pippo");
      echo(
    '","');
      echo(
    "pluto");
      echo(
    "')");

    ?>

    ...grazie!

  7. #7
    No, scusa, quello è PHP, javascript crea gli array in modo diverso:

    Codice PHP:
    <?php

      
    echo('data = new Array("');
      echo(
    "pippo");
      echo(
    '","');
      echo(
    "pluto");
      echo(
    "')");

    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    Originariamente inviato da artorius
    Non c'è problema, crei una stringa del tipo

    DD#AA#DD|FF#CC#VV|DD#RR#RR

    poi fai split(|) per ottenere il primo array, poi, su ogni elemento, split(#) per ottenere l'array interno.

    ...bella quest'idea, non c'havevo mai pensato, di solito usavo split per separare singole stringhe, ma quella di usare caratteri diversi per rappresentare array bidimensionali è davvero un ottima idea !!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.