Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di jzorn
    Registrato dal
    May 2010
    Messaggi
    14

    chiiamata da js a php con funzionamento anomalo

    Ciao, mi sta capitando una cosa strana... sto sviluppandomi una applicazione desktop con php e uso uno script java piuttosto elementare per richiamare da una pagina web un programma che risiede sulla macchina server, in pratica chiamo dalla pagina web lo script java che a sua volta chiama uno script php passandogli il riferimento di un file, lo script php tramite shell passa il parametro al programma residente che lo esegue in asincrono mentre io continuo la navigazione...

    il tutto funziona, ma solo se nello script java lascio un alert che visualizza l'output dello script php... che poi, detto fra noi, non restituisce nulla... altrimenti lo script php non si attiva...
    ammetto di praticare molto poco js ma qualcuno mi può spiegare la magia dell'alert?


    di seguito il fessissimo script:

    codice:
    <script language="JavaScript" type="text/JavaScript" >
    function ins(obj) {
                var stringone = "dettaglio.php?obj="+obj;
                var oReq = new XMLHttpRequest();
                oReq.open("get", stringone,true);
                oReq.send();
                var risposta = oReq.responseText;
                alert (risposta);
        }    
    </script>

    e questo il php lanciato che aggiunge un file MP3 ad una lista di esecuzione


    Codice PHP:
    <?php

    if (isset($_GET['obj'])){
        
    $pezzo=$_GET['obj'];
    }

    $pezzo '"'$pezzo'" 2>&1';
    $pezzo=str_replace("\\","/",$pezzo);
    $programma '"''C:\Program Files (x86)\AIMP3\AIMP3.exe''"';
    $comando ' /insert ';
    $stringa=$programma$comando .$pezzo;

    //-----modalità senza attesa output
    system($stringa);

    ?>
    e grazie comunque!!!
    Ultima modifica di jzorn; 11-12-2014 a 18:35

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    http://www.w3schools.com/ajax/tryit....=tryajax_first , le chiamate ajax sono asincrone , le istruzioni non vengno eseguite in modo sequenziale.

  3. #3
    Utente di HTML.it L'avatar di jzorn
    Registrato dal
    May 2010
    Messaggi
    14
    ok e fin qui siamo d'accordo... ma il problema è che questo script che dovrebbe funzionare e muto perchè è una semplice chiamata ad host, senza l'alert non funziona... che la cosa non abbia senso me lo dico anche da solo... ma le cose stanno così

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Se metti alert('hello world') invece di alert(risposta) funziona lo stesso ?
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ma l'hai guardato il link? hai visto le differenze? dici che ti è chiaro che siano asincrone ma dal codice che hai postato non mi sembra proprio. E' coretto che non funzioni ,con l' alert va perchè nel frattempo è arrivata la risposta dal server.

  6. #6
    Utente di HTML.it L'avatar di jzorn
    Registrato dal
    May 2010
    Messaggi
    14
    cavolo! si funziona lo stesso

  7. #7
    Utente di HTML.it L'avatar di jzorn
    Registrato dal
    May 2010
    Messaggi
    14
    si, l'ho guardato...
    lì dichiarano la variabile
    la istanziano come nuovo oggetto (gestendo anche i vecchi explorer)
    gestiscono la risposta con onreadystatechange per scatenare una funzione che metta a video l'output
    e quindi c'è la chiamata

    ora sarò sicuro io che non capisco, ma non avendo nulla da mettere a video, visto che il mio script sul server si limita a lanciare un command su un terzo programma (è lì che viene aggiornata la lista di esecuzione) mi sembra di poter eliminare la parte di gestione della risposta e tenermi la semplice chiamata... e la sequenza è la stessa: dichiaro, istanzio, open, send...

    al limite potrei immaginare che senza funzione di attesa dell'output la pagina web resti freezata mentre lo script php viene chiamato(ma si tratterebbe di chiamata sincrona), invece lo script php non viene chiamato affatto...

    c'è un obbligo procedurale per cui lo script java deve dare un output qualsiasi altrimenti non funziona del tutto?
    dappertutto trovo script simili che però hanno sempre una funzione di ascolto che scrive un output...
    ho sostituito la gestione della risposta con un semplice helloworld e così lo script funziona mi becco la finestrella helloworld e contemporaneamente aimp3 riceve il file e aggiorna la sua playlist... togli l'alert e non succede nulla...


    codice:
    <script language="JavaScript" type="text/JavaScript" >
    
    
        function ins(obj) {
            var stringone = "dettaglio.php?obj="+obj;
            var chiama = new XMLHttpRequest();
            chiama.open("get", stringone,true);
            chiama.send();
            
            
            alert('hello world');
        }    
    </script>

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Ti serve la risposta della chiamata ajax? se si allora devi aspettare che l'elaborazione del server termini(funzione onreadystatechange). Nel tuo primo post hai messo

    oReq.send();
    var risposta = oReq.responseText;

    cosi non funzionerà mai.
    Ora invece dici che non ti serve la risposta della chiamata ajax, bene, allora dove sta il problema?

    contemporaneamente aimp3 riceve il file e aggiorna la sua playlist... togli l'alert e non succede nulla...
    Cos'è aimp3? riceve il file da chi? cmq stai facendo confusione, non hai un link da mostrarci?

    Ultima modifica di Vindav; 16-12-2014 a 11:05

  9. #9
    Utente di HTML.it L'avatar di jzorn
    Registrato dal
    May 2010
    Messaggi
    14
    grazie dell'attenzione, ricapitolo...

    sto usando PHP e mysql per scrivermi una applicazione desktop per gestire file e informazioni musicali.
    Da pagina web devo inviare ad aimp3 (che è un player musicale) l'indirizzo di un file da aggiungere ad una playlist.
    per cui
    da pagina html ho un pulsantino o un link che deve scatenarmi uno script java che a sua volta richiama uno script php che via shell invia il comanda di inserire il file nella playlist a aimp3
    non ho nessun output da mettere a video, semplicemente lancio uno script php che non ha nessuna risposta, non mi restituisce neanche eventuali messaggi di errore.
    ora senza l'alert nello script java il php non viene richiamato, se aggiungo l'alert il java richiama il php e tutto funziona...

    semplicemente mi sembra molto strano... in nessuno dei linguaggi che ho usato la presenza di una display incide sul funzionamento... a meno di grossolani errori di programmazione... parentesi non chiuse, virgolette messe male etc... mi chiedevo se java (che conosco poco) avesse regole che non so, come obbligo di gestire in qualche modo una risposta... poichè, senza l'alert, la funzione non effettua proprio il richiamo del php, non è che non restituisce la risposta...

    poi si, tutto sommato funziona anche così, mi devo chiudere l'alert tutte le volte che aggiungo un file ...si può sopravvivere ma non si è felici...

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Perche non ti fai tornare una bella stringa ok/ko da php? cosi puoi anche mostrare a video qualcosa come "playlist aggiornata con successo" o un messaggio di errore in caso di ko, o almeno verfica che la chiamata sia andata a buon fine(status 200).

    Puoi monitorare le richieste che invii, dalla console del browser o firebug, cosi da verificare se la chiamata è stata effettuata e lo stato.

    Non c'è nessuna regola strana in javascript, la chiamata viene effettuata quando fai il send, che ci sia o meno l'alert e non è obbligatorio gestire la risposta. E' impossibile capire perchè questo comportamento anomalo nella tua pagina se non ci dai un link.

    p.s. java non è javascript, sono due linguaggi ben diversi

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.