Como Agregar Este Trozo De Javascript En La Vista Index [Solucionado]

Hola

Tengo el siguiente codigo


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>


<script type="text/javascript">


    function getRegistroAJAX() {


        //GUARDAMOS EN UNA VARIABLE EL RESULTADO DE LA CONSULTA AJAX

        var registro = $.ajax({


            url: 'cron.php', //ruta del archivo que verifica si hay mas registros

                dataType: 'text',//indicamos que es de tipo texto plano

                async: false     //ponemos el parámetro asyn a falso

        }).responseText;


        //actualizamos la pagina para mostrar los nuevos registros

       if (registro == 1){

            window.location.reload();

        }

    }


    //con esta funcion llamamos a la función getRegistroAJAX cada segundo para verificar si hay nuevos registros

    setInterval(getRegistroAJAX,1000);


</script>

El cual lo que hace, es que cada segundo ejecuta la funcion getRegistroAJAX() y en esta se encuentra un archivo llamado cron.php que se encarga de verificar si hay nuevos registros en una tabla de la bd, en el caso que si hayan nuevos registros retorna un true que es leido por la funcion y recarga la pagina para mostrar los nuevos registros.

Lo que quiero es agregar este trozo de codigo a dentro de la vista index, que es la primera que carga y me muestra los registros de la tabla, para que cuando se agreguen mas registros esta vista se actualice automaticamente. Esto lo necesito de este modo por que los regitros los voy a ingresar desde otra aplicacion.

Ya probe el codigo aparte (fuera de yii) y si funciona correctamente pero no se como agregarlo a dentro de una vista de yii

Agredezco la ayuda que me puedan prestar.

Hola,

Debería valerte hacerlo directamente, es decir, en la misma vista donde quieres que se ejecute pon:




<script type="text/javascript">

    function getRegitroAJAX() {

        //GUARDAMOS EN UNA VARIABLE EL RESULTADO DE LA CONSULTA AJAX

        var registro = $.ajax({

            url: 'cron.php', //ruta del archivo que verifica si hay mas registros

                dataType: 'text',//indicamos que es de tipo texto plano

                async: false     //ponemos el parámetro asyn a falso

        }).responseText;


        //actualizamos la pagina para mostrar los nuevos registros

       if (registro == 1){

            window.location.reload();

        }

    }

    //con esta funcion llamamos a la función getRegistroAJAX cada segundo para verificar si hay nuevos registros

    setInterval("getRegitroAJAX()",4000);

</script>



Si tenías mal el nombre de la función pero así sin más funciona.

Cada 4 segundos en este caso intenta buscar el archivo cron.php, en mi caso no existe,…

Pruebalo directamente y luego si quieres pasaló al clientScript.

Saludos

+1

Gracias por contestar

Puse el código directamente en la vista index y no funciono, lo puse en la vista _view y tampoco funciono, lo puse en ambas al mismo tiempo y no funciono. Lo intente con y sin el script que carga el jQuery 1.8.2 y nada.

Este es el código que tengo en la vista index


<?php

/* @var $this AlertasController */

/* @var $dataProvider CActiveDataProvider */


$this->breadcrumbs=array(

	'Alertas',

);


$this->menu=array(

	array('label'=>'Gestionar Alertas', 'url'=>array('admin')),

);

?>


<h1>Alertas</h1>


< Aqui puse el codigo >


<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider,

	'itemView'=>'_view',

	'pager'=>array("htmlOptions"=>array("class"=>"pagination")),

)); ?>


< tambien intente ponerlo aqui >



Como ven intente en dos lugares, por si era la ubicación pero nada.

Hola,

No necesitas incluir el archivo de jquery, el núcleo de yii lo incorpora.

Ve a la pagina mas simple que tengas para comprobar que te funciona y esta activo jquery y ve probando hasta donde llega.

Con el 1º codigo deberia decirte que versión de jquery estas trabajando, tiene que funcionar es solo un alert.

Si no lo hace o tienes desactivado javascript o hay algún código en javascript anterior que falla, pero eso con firebug o chrome lo puedes ver.




<script type="text/javascript">

	alert($.fn.jquery);

</script>



Esta es similar funcion que la que pusiste cambia el color de fondo cada segundo.




<script type="text/javascript">

    function fondo() {

        var color = $('body').css( 'background-color');

        if (color=='rgb(0, 0, 125)')

			 $('body').css( 'background-color','rgb(125, 0, 0)' );

 		else

 			 $('body').css( 'background-color','rgb(0, 0, 125)' );

    }

     setInterval("fondo()",1000);

</script>



Finamente la tuya recuerda que el nombre es getRegistroAJAX y estaba mal escrito en 1 de ellas, esta si falla es porque no encuentra el archivo cron.php, pero eso tambien lo debes ver como incaba antes.

El código javascript ponlo donde quieras en la vista.

Saludos

Muchas Gracias

Efectivamente el código javascript esta bien y el que me aporto de cambiar el color de fondo funciona perfectamente, use firebug para ver el problema y resulta que no puede acceder al archivo cron.php. Pero como ya no es parte del tema del post doy el tema por solucionado.

Muchas Gracias a todos por sus aportes.