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