Utilizzare un JavaScript esterno

Salve a tutti,

il mio nuovo problema col framework Yii è rappresentato dall’utilizzo di ajax e in particolare sfruttare file javascript esterni alla pagina.

Seguendo una breve guida su ajax ho notato che all’interno di una pagina è possibile specificare i tag <script> che si occuperanno appunto di contenere funzioni js che potranno essere richiamate quando necessarie. Sempre seguendo la guida ho notato cosa ben più interessante, la possibilità di mettere queste funzioni in un file esterno file.js il quale viene poi utilizzato specificando nei tag seguenti:

<script type="text/javascript" src="path/to/file.js"></script>

Ho creato la mia pagina di prova e l’ho testata esternamente al framework, ed è funzionante ( sia pagina che file.js si trovano nella stessa directory . Tuttavia una volta spostati ad esempio nella cartella view/site/pages nonostante siano sempre nella stessa directory, non funziona più.

Un accorgimento:

Se invece di usare le funzioni in un file esterno, le inserisco tra i tag <script> all’interno della pagina stessa, funziona tutto correttamente ( quindi ajax implementato ).

Qualcuno di voi saprebbe spiegarmi quale è l’errore che commetto?

Grazie

Yii preferisce che gli comunichi gli script: ci pensa lui a metterli nella pagina.




<?php

    $cs = Yii::app()->getClientScript();

    $cs->registerScript(

        'nome-script', '$("#LoginForm_username").focus();', CClientScript::POS_END

    );

?>



Uhm non capisco,

io ad esempio ho un file prova.js con dentro varie funzioni utili. Se voglio poterle richiamare in una pagina, come mi dovrei comportare?

Ad esempio ho trovato nella documentazione questa funzione che dovrebbe fare al mio caso:


<?php

    Yii::app()->clientScript->registerScriptFile(

	Yii::getPathOfAlias('application.components.js').'/provajs_esterno.js',

	CClientScript::POS_HEAD

	)

?>

Dove appunto provajs_esterno.js è il file JavaScript che voglio utilizzare e lo ho sistemato nella cartella protected/components/js. Tuttavia, continua a non funzionare come dovrebbe.

In che senso non funziona? Come lo richiami nella view?

Lo inserisco prima del resto del codice cosi come l’ho postato.

Quando vado ad aprire la pagina nel browser e la ispeziono, di fatto nel codice del tag <head> mi ritrovo <script type="text/javascript" src="percorso/a/file.js"></script>.

Tuttavia è come se non ci fosse. Il codice del file.js è semplice e testato ( infatti come ho detto fuori dall’ambiente yii è perfettamente funzionante, e le funzioni vengono richiamate correttamente ).

Ok ho risolto il problema.

Da quanto son riuscito a capire ( considerando la mia ignoranza cosmica in argomento :) ) i file javascript che volevo includere erano inseriti in cartelle non accessibili tramite web, questo perchè apache non riesce ad accedere alla cartella protected.

Per risolvere ho semplicemente creato una cartella javascripts nella webroot contenente tutti i file js e per includerli ho notato che funziona sia registerScriptFile sia l’utilizzo di <script type=“text/javascript” src=“path/to/javascripts/file.js”></script>

Grazie dell’aiuto ;)

Molto bene =).