Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794

    [AS3] passaggio dati a php

    ho questo codice:

    function invia_dati(){
    var my_lv:LoadVars = new LoadVars();
    my_lv.var1 = 41.897422;
    my_lv.var2 = 12.513063;
    my_lv.send("coordinate.php", "_self", "POST");

    }

    <mx:Button label="41.897422" id="crea" click="{invia_dati()}"/>

    nell'atto della compilazione, mi da l'errore che LoadVars non esiste. Secondo me manca un import ma non riesco a capire quale sia. Qualcuno può aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    LoadVars in AS3 è stato sostituito da URLLoader, di cui ti ho già dato il codice corretto in un'altra discussione simile. [edit]pardon, ho letto meglio il codice, se devi fare solo il send, il discorso è un po' diverso, rimane valido il suggerimento successivo.[/edit]
    Ho scritto un articolo al proposito del passaggio da LoadVars a URLLoader, se ti va, trovi il link in firma.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Ah ok grazie mille e quindi il metodo send come è stato sostituito?

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Riporto quanto ho scritto nell'articolo riguardo al send:

    LoadVars.send(url:String, target:String, [method:String]) -> flash.net.sendToURL(request:URLRequest)

    Al contrario di load e sendAndLoad, il semplice send non viene richiamato dalla classe URLLoader, questo perchè con il send non ci deve essere interazione tra lo script AS e la pagina che riceve i dati, in pratica la pagina che riceve viene aperta ma non restituisce nulla a flash e continua la "sua strada" per conto suo, gestendo le variabili ricevute da flash nella maniera che si preferisce.
    Così molto semplicemente il codice che compone questa chiamata si limita al seguente esempio:
    codice:
    // inizializzo una variabile che contiene il nome del file a cui inviare i dati
    var url:String = "test.php";
    // inzializzo un oggetto URLVariables preposto a contenere le variabili da inviare e lo riempio con due variabili
    var variables:URLVariables = new URLVariables();
    variables.prova1 = "prima variabile";
    variables.prova2 = "seconda variabile";
    // a questo punto creo un nuovo oggetto URLRequest che "riempirò" con le variabili da inviare allo script esterno
    // e accedendo alla sua proprietà "data" gli assegno l'oggetto URLVariables creato e riempito in precedenza
    var request:URLRequest = new URLRequest(url);
    request.data = variables;
    // l'ultimo passo è il richiamo della funzione contenuta nel package "flash.net", che invia le variabili all'url richiesto
    // senza aspettarsi una risposta in cambio
    sendToURL(request);
    Possiamo notare dall'esempio che la gestione delle variabili in "uscita" viene fatta dalle due classi URLVariables e URLRequest [...omissis]

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    ho adattato il mio codice così:

    private function invia_dati():void{
    // inizializzo una variabile che contiene il nome del file a cui inviare i dati
    var url:String = "coordinate.php";
    // inzializzo un oggetto URLVariables preposto a contenere le variabili da inviare e lo riempio con due variabili
    var variables:URLVariables = new URLVariables();
    variables.var1 = 41.897422;
    variables.var2 = 12.513063;
    // a questo punto creo un nuovo oggetto URLRequest che "riempirò" con le variabili da inviare allo script esterno
    // e accedendo alla sua proprietà "data" gli assegno l'oggetto URLVariables creato e riempito in precedenza
    var request:URLRequest = new URLRequest(url);
    request.data = variables;
    // l'ultimo passo è il richiamo della funzione contenuta nel package "flash.net", che invia le variabili all'url richiesto
    // senza aspettarsi una risposta in cambio
    sendToURL(request);

    }


    ho creato il pulsante <mx:Button label="41.897422" id="crea" click="{invia_dati()}"/> che cliccato mi chiama la funzione.


    questa è la pagina php che recupera le due variabili:
    <?php
    $returnVars = array();
    $returnVars['x'] = $_POST['var1'];
    $returnVars['y'] = $_POST['var2'];
    $returnString = http_build_query($returnVars);

    echo html_entity_decode($returnString);
    ?>

    l'ho provata su server ma niente da fare...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Forse sono riuscito a fare un passo in avanti. Ti posto la funzione completa in as3

    private function invia_dati():void{
    var myVars:URLVariables = new URLVariables();
    myVars.var1 = 41.897422;
    myVars.var2 = 12.513063;
    var request:URLRequest = new URLRequest("coordinate.php");
    request.method = URLRequestMethod.GET;
    request.data = myVars;
    sendToURL(request);
    navigateToURL(request);

    var loader:URLLoader = new URLLoader(new URLRequest("coordinate.php"));
    loader.addEventListener(Event.COMPLETE, completeHandler);
    var miox:Number, mioy:Number;
    function completeHandler (evt:Event):void {
    try {
    var vars:URLVariables = new URLVariables(evt.target.data);
    miox = vars.x;
    mioy = vars.y;

    trace ("miox: "+miox+" e mioy: "+mioy);

    var latlng:LatLng = new LatLng(miox, mioy);
    map.addOverlay(new Marker(latlng));

    } catch (err:Error) {
    trace (err);
    }
    }
    var latlng2:LatLng = new LatLng(41.897600, 12.513200);
    map.addOverlay(new Marker(latlng2));

    }
    private function onMapReady(event:Event):void {
    map.setCenter(new LatLng(41.898284, 12.512784), 17, MapType.NORMAL_MAP_TYPE);



    }

    la pagina coordinate.php è la seguente:
    <?php
    $returnVars = array();
    $returnVars['x'] = $_GET['var1'];
    $returnVars['y'] = $_GET['var2'];
    $returnString = http_build_query($returnVars);

    echo html_entity_decode($returnString);
    ?>


    Sai cosa succede? che se clicco sul pulsante invece di nmettermi il risultato sulla pagina overlay.html, mi apre la pagina php e mi stampa i risultati delle variabili che passo che sono corrette. Invece io mi aspetto che vengono recuperate nella pagina html stessa. come mai?

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Bisogna impostare la proprietà method dell'URLRequest a "POST" per funzionare con quel codice php, perchè il valore di default è "GET".

    var request:URLRequest = new URLRequest(url);
    request.data = variables;
    request.method = URLRequestMethod.POST;

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da ylio82
    Sai cosa succede? che se clicco sul pulsante invece di nmettermi il risultato sulla pagina overlay.html, mi apre la pagina php e mi stampa i risultati delle variabili che passo che sono corrette. Invece io mi aspetto che vengono recuperate nella pagina html stessa. come mai?
    Beh, è quello che tu chiedi di fare al codice, il send ti apre una nuova pagina, come già scritto, mentre nel caso che stai descrivendo dovresti usare sendAndLoad, per recuperare una risposta dallo script php. Meglio che spieghi a parole cosa vorresti fare, prima di scrivere il codice.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Sia con post che con get funziona allo stesso modo. Mi apre la pagina php e mi stampa questo:
    x=41.897422&y=12.513063

    ma io voglio che con:
    var loader:URLLoader = new URLLoader(new URLRequest("coordinate.php"));
    loader.addEventListener(Event.COMPLETE, completeHandler);
    var miox:Number, mioy:Number;
    function completeHandler (evt:Event):void {
    try {
    var vars:URLVariables = new URLVariables(evt.target.data);
    miox = vars.x;
    mioy = vars.y;

    trace ("miox: "+miox+" e mioy: "+mioy);

    var latlng:LatLng = new LatLng(miox, mioy);
    map.addOverlay(new Marker(latlng));

    } catch (err:Error) {
    trace (err);
    }
    }
    vengono recuperati i valori cosa che non accade...

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Leggi il mio ultimo post

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 © 2025 vBulletin Solutions, Inc. All rights reserved.