Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [ajshp] problema iniziale hello world

    sto testando questo script presente in questa pagina

    http://www.devpro.it/AJSHP/DOCUMENTATION/italiano.html

    appena carico la pagina mi da questo alert
    alert('Error, PHP is not working correctly.');

    dato da questo codice js
    codice:
    listener.onService = function(s) {
    	if(s == false)
    		// ajshp cannot connect to server or required class
    		alert('Error, PHP is not working correctly.');
    	
    	// we can set a variable to know if AJSHP is working or not
    	this.enabled = s;
    }

    Qualche idea in merito?
    Conoscete qualche esempio un po' piu' complesso di un hello?

    Ciao
    Trinity
    http://www.vocabolariodidio.it
    http://www.giulianodelena.com
    trova la tua casa per le vacanze
    http://www.salento.lecce.it

  2. #2
    azz ... quel file non so nemmeno perchè è rimasto li.

    Mi scuso per il disagio e ti consiglio di vedere la documentazione in inglese presente nel sito di AJSHP, se hai qualche dubbio su quella chiedi pure


    P.S. il mio blog ( http://www.3site.it/blog/ ) è un esempio più complesso di un hello nell pagina http://www.devpro.it/AJSHP/ invece trovi su Examples alcuni utilizzi differenti di AJSHP
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    un po' di documentazione in italiano mi ha fatto bene a capire alcune cosette...

    Ora prendo come test l'esempio che c'e' nella documentazione in inglese.

    Facendo uso della console Javascript di Firefox scopro che quando premo il pulsante
    TestAJSHP mi torna un errore:
    "service.encodeString is not a function"
    codice:
    <script type="text/javascript">
    	function test_AJSHP() {
    		if(document.getElementById) {
    			if(service && listener.enabled) {
    				/**/service.encodeString(
    						document.getElementById('ms').value, parseInt(document.getElementById('mi').value)
    					)
    				//service.encodeString('ciao',20);
    			}
    		}
    		else
    			alert('please upgrade your browser');
    	}
    </script>
    Ho controllato il nome del metodo nella classe ed e' corretto... quindi dov'e' l'inghippo?
    Alla pressione del tasto non dovrebbe ripetermi n volte la stringa che do' in input al metodo?
    Trinity
    http://www.vocabolariodidio.it
    http://www.giulianodelena.com
    trova la tua casa per le vacanze
    http://www.salento.lecce.it

  4. #4
    Originariamente inviato da Ndr
    "service.encodeString is not a function"
    è descritto nei bugfix, PHP4 non prende informazioni run-time case-sensitive, quindi se tu hai una classe con metodo encodeString , prendi i metodi della classe in php, questo verrà restituito come "encodestring" ed in javascript avrai service.encodestring, che non potrai lostesso riutilizzare perchè in php il metodo encodestring della classe non esisterà
    (fagianate reali del PHP 4, un meticcio tra case-sensitive e non ... )

    In PHP 5 quindi non avrai alcun problema con quell'esempio, mentre per il 4 ho implementato sulla gateway un controllo in più, volendo utile anche per la versione 5.

    Tale controllo si basa su un metodo dedicato della classe da utilizzare:

    AJSHP_SCHEMA

    questo metodo deve far tornare un array di stringhe rappresentanti i nomi dei metodi che si vogliono poter utilizzare anche in javascript.

    codice:
    class MyFirstAJSHP {
    	
    	function AJSHP_SCHEMA() {
    		return array("encodeString");
    	}
    	
    	function encodeString($str, $times) {
    		if(!is_int($times) || (int)$times <= 0)
    			$times = 1;
    		return str_repeat(base64_encode($str), (int)$times);
    	}
    }
    questa dovrebbe andare senza problemi, sia su PHP4 che 5 che 6


    speravo di poter automatizzare il tutto ma:

    1 - anche in AMFPHP è necessario dichiarare la tabella dei metodi da poter usare, quindi tutto sommato così AJSHP è anche più coerente come progetto alternativo
    2 - in questo modo, anche in PHP5, puoi scegliere di far usare a JS solo alcuni metodi e non tutti quelli pubblici, se vogliamo più sicuro o veloce





    [edit]
    3 - devo aggiornare la documentazione
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Finalmente ho finito il mio stupido test di hello world...
    posto qui una variante utile per chi, come me, vuole avvicinarsi a AJSHP.

    Si tratta di un aggiunta di un metodo alla classe esistente nella docummentazione del sito di ajshp

    Il metodo non fa altro che fare un echo ripetuto n volte.

    la parte php e' la seguente
    Codice PHP:
    <?php
    // MyFirstAJSHP.class.php
    class MyFirstAJSHP {
        function 
    AJSHP_SCHEMA() {
            return array(
    "encodeString","echo_n");
        }
        
        function 
    encodeString($str$times) {
        if (!empty(
    $str) && $times >0){
            if(!
    is_int($times) || (int)$times <= 0)
                
    $times 1;
            return 
    str_repeat(base64_encode($str), (int)$times);
        }
        else
            return 
    "I campi sono obbligatori";
        }
        
        function 
    echo_n($str,$times){
            if (!empty(
    $str) && $times >0){
                
    $speek 'Sto per dire > [b]'.$str.'[/b] [i]'.$times.'[/i] volte
    '
    ;
                for(
    $i=1$i<=$times$i++)
                    
    $speek .= $i.'> '.$str.'
    '
    ;
            
                return 
    $speek;
            }
            else
                return 
    "I campi sono obbligatori";
        }
    }
    ?>
    La parte HTML e JS e' la seguente

    codice:
    <html>
    <head>
    <title>© AJSHP Project :: MyFirstAJSHP example</title>
    <script type="text/javascript" src="jsclasses/AJSHP.js"></script>
    <script type="text/javascript">
    	NetServices.setDefaultGatewayUrl('gateway/Gateway.class.php');
    	var connection = NetServices.createGatewayConnection();
    	var listener = new Object();
    	listener.onStatus = function(message) {
    		alert(message);
    	}
    	listener.onService = function(s) {
    		if(s == false)
    			alert('Error, PHP is not working correctly.');
    		this.enabled = s;
    	}
    	listener.encodeString_Result = function(v) {
    		if(document.getElementById)
    			document.getElementById('result').innerHTML = v;
    	}
    	listener.echo_n_Result = function(v){
    		if(document.getElementById)
    			document.getElementById('result_echo').innerHTML = v;
    	}
    	
    	listener.encodeString_Progress = function(p) {
    		if(document.getElementById)
    			document.getElementById('progress').innerHTML =
    			p + '%';
    	}
    	
    	listener.echo_n_Progress = function(p) {
    		if(document.getElementById)
    			document.getElementById('progress').innerHTML =
    			p + '%';
    	}
    	
    	var service = connection.getService('MyFirstAJSHP', listener);
    </script>
    <script type="text/javascript">
    	function test_AJSHP() {
    		if(document.getElementById) {
    			if(service && listener.enabled) {
    				service.encodeString(
    					document.getElementById('ms').value,
    					parseInt(
    					document.getElementById('mi').value
    					)
    				);
    			}
    		}
    		else
    			alert('please upgrade your browser');
    	}
    	function test_AJSHP2() {
    		if(document.getElementById) {
    			if(service && listener.enabled) {
    				service.echo_n(
    					document.getElementById('ms').value,
    					parseInt(
    					document.getElementById('mi').value
    					)
    				);
    			}
    		}
    		else
    			alert('please upgrade your browser');
    	}
    	function resetta(){
    		document.getElementById('ms').value = '';
    		document.getElementById('mi').value = '';
    		document.getElementById('result').innerHTML = '';
    		document.getElementById('result_echo').innerHTML = '';
    	}
    </script>
    </head>
    <body style="font-family:Arial, Helvetica, sans-serif; font-size:10px">
    <div>
    Che stringa vuoi ?
    
    <input id="ms" type="text" maxlength="300" value="write something" />
    
     
    
    Quante volte voi ripeterla??
    
    
    <input id="mi" type="text" maxlength="5" value="10" />
    
     
    
    <input type="button" value="TEST AJSHP >encode" onClick="test_AJSHP();" />
    <input type="button" value="TEST AJSHP >echo" onClick="test_AJSHP2();" />
    <input type="button" value="Reset" onClick="resetta()" />
    
     
    
    AJSHP Progression: <span id="progress">0%</span>
    
    
    
    
    <fieldset>
    	<legend>Test 1 > Codifica</legend>
    	<span id="result"></span>
    </fieldset>
    <fieldset>
    	<legend>Test 2 > Echo</legend>
    	<span id="result_echo"></span>
    </fieldset>
    </div>
    </body>
    </html>
    e' una cosa molto stupida come vedete, ma secondo me utile per chi vuole capire come funziona...
    ciao

    P.S.1
    Unico neo che ho riscontrato (per ora) e' che se ci sono degli errori nella classe php, lanciando la pagina non ti dice qual'e' e dove sta', ma ritorna semplicemente un alert dicendo che c'e' un problema nella parte di codice php.....

    P.S.2
    OT x andr3a
    In futuro, se avro' dei problemi, posto qui su questo forum o ne hai uno personale che tratta ajshp?
    Trinity
    http://www.vocabolariodidio.it
    http://www.giulianodelena.com
    trova la tua casa per le vacanze
    http://www.salento.lecce.it

  6. #6
    ma che bello, qualcuno che fa esempi e docs al posto mio, non m'era ancora capitato .... grazie mille


    solo una cosa, se le funzioni _Progress sono analoghe in tutti i metodi, puoi accorpare meglio così

    codice:
    listener.encodeString_Progress = 
    listener.echo_n_Progress = function(p) {
    	if(document.getElementById)
    		document.getElementById('progress').innerHTML =
    		p + '%';
    };
    e qualora i metodi fossero numerosi, puoi semplificarti la vita così:
    codice:
    for(var a in listener) {
    	if(a.indexOf("_Result") === (a.length - 7)) {
    		listener[a.substr(0, a.indexOf("_Result")) + "_Progress"] = function(p) {
    			document.getElementById('progress').innerHTML =	p + '%';
    		};
    	};
    };
    in modo che per ogni _Result assegnato ti crei in automatico i vari _Progress





    Originariamente inviato da Ndr
    P.S.1
    Unico neo che ho riscontrato (per ora) e' che se ci sono degli errori nella classe php, lanciando la pagina non ti dice qual'e' e dove sta', ma ritorna semplicemente un alert dicendo che c'e' un problema nella parte di codice php.....
    ti dice il metodo della classe che ha dato errore, se attivi il debug, creando la cartella debug sotto quella gateway, ti crea un file di report di tipo .html con eventuale warning o notice


    per il P.S.2 ... posta pure qua senza problemi, per ora non c'è un forum dedicato
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Ciao, ho un sacco di domande da fare... :
    1- Ho provato a scaricare AJSHP, ma dove trovo i file javascript che servvono, io ho scaricato solo ajhp.js
    2- Io ho la struttura del sito già esistente, mi serve solo una classe che chiami i vari metodi passando variabili _GET o _POST, ma con gli esempi postati, non si capisce molto...
    3- a cosa serve listener / _Progress / _Result ??? --- esiste una documentazione completa?
    4- la struttura deve essere cosi rigida? intendo il gateway nella cartella /gateway e le classi in quella /classes ?
    5- quando effettuo un operazione, io vorrei cambiare piu' div contemporaneamente con un solo link, ed anche il titolo della pagina come faccio? ad esempio
    codice:
    <html>
     <head>
      <title>Questo titolo deve cambiare</title>
     </head>
     <body>
      <div id="primo">Testo da cambiare</div>
      <div id="secondo">Testo da cambiare</div>
      <span onClick="funzione()">cambia</span>
     </body>
    </html>
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  8. #8
    intanto ti consiglio ACE, che è la versione più matura e derivata del progetto.

    li c'è la documentazione fatta un pò meglio ... c'è un esempio da scaricare e se hai domande chiedi pure mentre per il titolo della pagina chiedi in JavaScript
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Originariamente inviato da andr3a
    intanto ti consiglio ACE, che è la versione più matura e derivata del progetto.

    li c'è la documentazione fatta un pò meglio ... c'è un esempio da scaricare e se hai domande chiedi pure mentre per il titolo della pagina chiedi in JavaScript
    Ciao, intanto grazie
    Ho scaricato ACE ed usato, puoi già provare la ricerca del mio sito.... (sono contentissimo )
    Una pecca (anche se ancora non ho capito se è possibile farlo) io vorrei inviare i dati direttamente dal form, nel senso che non voglio passare le variabili una ad una ma tramite get o post passare tutti i campi di un form.....
    Comunque lo consiglio a tutti questo ACE, è di semplice uso e di facile implementazione...
    Grazie ancora, ciao.....
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  10. #10
    dovresti lavorare di JS; prendere tutti gli input della form ed inviarli come array associativo (oggetto) ad un metodo php in grado di riceverlo e di gestirne i valori (chiavi)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.