Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44

    Passaggio Array di array da javascript a file

    Salve, io ho un array di array che vorrei trasferire tramite ajax in un file php per poi stamparlo in un file txt. Il codice che ho usato è il seguente:

    JAVASCRIPT

    function saveData(){
    //dataString e' un array di array
    var jsonString = JSON.stringify(dataString);
    $.ajax({
    type: "GET",
    url: "script.php",
    data: {data : jsonString},
    cache: false,


    success: function(){
    alert("OK");
    }
    });
    }

    PHP

    <?php

    $data = json_decode($_GET['data']);
    file_put_contents('filename.txt', print_r($data, true));


    ?>

    Dove sbaglio?

  2. #2
    Ciao un errore potrebbe essere quello di usare GET al posto di POST.
    Prova ad impostare POST sul 'type' della chiamata AJAX.
    Successivamente per essere sicuro del dato passato fai un var_dump().

    ad esempio:

    Codice PHP:

    var_dump
    ($_REQUEST['data']); 

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Ho provato il tuo codice e funziona benissimo. L'unica cosa che vedo (con quello che hai postato e se non vedi il messaggio Ok) è che non richiami le funzioni jQuery.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Ho già provato sia GET che POST non funziona lo stesso. Proverò col dump

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    anch'io vedo il messaggio ok però il file non viene creato.
    la funzione saveData la chiamo tramite un button e viene sicuramente richiamata perchè mi esce il messaggio "Ok"

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Problema di cartella allora ?


    Altrimenti.

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <
    html>
    <
    head>
    <
    title>Untitled</title>
    <
    script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script language="JavaScript" type="text/javascript">
    <!--
    function saveData(text){
     //dataString e' un array di array
     var a = new Array();
     a[0]  = new Array(10,11,12,13);
     var jsonString = JSON.stringify(a);
     $.ajax({
     type: "GET",
     url: "script.php",
     data: {data : jsonString}, 
     cache: false,
     success: function(){
     alert("OK");
     }
     });
     }
    //-->
    </script>
    </head>
    <body>
    <input type="button" value="ok" onclick="saveData('pippo')" />
    </body>
    </html> 

    script.php
    Codice PHP:
    <?php
     $data 
    json_decode($_GET['data']);
     
    file_put_contents('filename.txt'print_r($datatrue));
    Dà filename.txt
    codice:
    Array
    (
        [0] => Array
            (
                [0] => 10
                [1] => 11
                [2] => 12
                [3] => 13
            )
    )
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Grazie per aver fatto la prova! a questo punto penso che sia proprio un problema di permessi. ne approfitto per una domanda veloce, se volessi che nel file venissero stampati solo i valori e andando a capo in questo modo
    10, 11, //data[0][0] e data[0][1]
    34, 21, //data[1][0] e data[1][1]
    ...
    i valori ovviamente sono inventati

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Se hai un errore di sintassi per esempio vedrai l'Ok lo stesso.

    Puoi fare cosi

    Codice PHP:
    <?php
     $data 
    json_decode($_GET['data']);
     
     
    $risultato "";
     foreach(
    $data as $key0 => $subArray) {
      
    $risultato .= implode(',',$subArray).PHP_EOL;
     }
     
     
    file_put_contents('filename.txt'$risultato);

    codice:
    10,11,12,13
    20,21,22,23
    30,31,32,33
    Se vuoi una virgola alla fine di ogni riga.

    $risultato .= implode(',',$subArray).','.PHP_EOL;
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Ok, grazie mille delle risposte! siete utilissimi, buona serata!

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Scusate ancora una domanda. In questo caso se volessi che la chiamata ajax passasse più di un array o altri dati in modo che io possa accedere ai vari dati nel file php con $_GET['data1'], $_GET['data2'], ecc. che codice dovrei usare? basta aggiungere qualcosa nelle sezione data di $.ajax ?

Tag per questa discussione

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.