Yii Framework Forum: Como Agregar Este Trozo De Javascript En La Vista Index [Solucionado] - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Como Agregar Este Trozo De Javascript En La Vista Index [Solucionado] Rate Topic: -----

#1 User is offline   daytlon 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 01-November 13

Posted 06 November 2013 - 04:00 PM

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.
0

#2 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 11-July 13

Posted 07 November 2013 - 07:30 AM

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
0

#3 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 334
  • Joined: 30-November 12
  • Location:Galiza

Posted 08 November 2013 - 04:02 AM

View Postrahif, on 07 November 2013 - 07:30 AM, said:

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>



+1
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#4 User is offline   daytlon 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 01-November 13

Posted 11 November 2013 - 11:34 AM

View Postrahif, on 07 November 2013 - 07:30 AM, said:

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


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.
0

#5 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 11-July 13

Posted 12 November 2013 - 02:02 PM

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
0

#6 User is offline   daytlon 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 01-November 13

Posted 12 November 2013 - 09:47 PM

View Postrahif, on 12 November 2013 - 02:02 PM, said:

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.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users