Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 3 de 3

Tema: JSON php

  1. #1
    Recien Llegado! Merodeador
    Fecha de Ingreso
    14 may, 12
    Mensajes
    9
    Poder de Reputación
    0

    JSON php

    Buenas, tengo el siguiente problema:

    Tengo una página donde se muestra una tabla. En cada columna de la tabla hay la opción de modificar esa fila. Cuando el usuario modifica esa fila se crear una conexión XMLHttpRequest para actualizar mediante Ajax, hasta aquí bien. Una vez actualizada la base de datos, se ejecuta una función javascript para pedir los nuevos datos de la base de dtaos y actualizarla en pantalla (también mediante javascript).

    Cuando se ejecuta la página por primera vez todo perfecto, pero cuando el usuario selecciona modificar la nueva visualización que debería mostrar la tabla ya actualizada muestra la tabla con los datos antiguos. Los daos los devuelvo de php a javascript mediante json. Los datos que me devuelve el archivo que se encarga de recuperar los datos de la base de datos son los iniciales pero en la base de datos si aparece la modificación. Y.... ESTO SOLO ME OCURRE EN Internet Explorer. He probado en Chrome, Firefox y Opera y me funciona correctamente.

    Archivo php que recupera la colección de datos de la base de datos:

    Código PHP:
    Código PHP:
    <?php 
    header
    ('Content-Type: text/txt; charset=ISO-8859-1'); 
    include_once(
    'clases.php'); 

    $fecha1 $_REQUEST['anio'].'-01-01'

    $fecha2 $_REQUEST['anio'].'-12-31'


    $rows = new colCuentaProveedor($_REQUEST['dni'],$fecha1,$fecha2); 

    require(
    "Services_JSON-1.0.3/JSON.php"); 

    $json = new Services_JSON(); 
    $cad $json->encode($rows); 

    echo 
    $cad
    ?>
    Arvhivo javascript que me muestra la actualización:

    Código Javascript:

    Código:
    function procesarEventos1(){
        var tabla = document.getElementById('cuenta');
     
        if(conexion.readyState == 4){
            alert(conexion.responseText);
     
            var fila1 = tabla.insertRow(-1);
     
    var celda1 = fila1.insertCell(-1);
    celda1.innerHTML = "Fecha Factura";
    
    var celda1 = fila1.insertCell(-1);
    celda1.innerHTML = "Nº Factura";
    
    var celda1 = fila1.insertCell(-1);
    celda1.innerHTML = "Concepto";
    
    var celda1 = fila1.insertCell(-1);
    celda1.innerHTML = "Debe";
    
    var celda1 = fila1.insertCell(-1);
    celda1.innerHTML = "Haber";
    
    var celda1 = fila1.insertCell(-1);
    celda1.innerHTML = "Saldo";
    
    var datos = eval("("+conexion.responseText+")");
    var miArray = new Array("seleccione opcion","modificar","eliminar");
    
    var saldo = 0;
    for(i=0;i<datos.rows.length;i++){
    
    var fila = tabla.insertRow(-1);
    var celda = fila.insertCell(-1);
    celda.innerHTML = datos.rows[i].fecha_fac;
    celda = fila.insertCell(-1);
    celda.innerHTML = datos.rows[i].num_fac;
    celda = fila.insertCell(-1);
    celda.innerHTML = datos.rows[i].Concepto;
    celda = fila.insertCell(-1);
    celda.innerHTML = datos.rows[i].debe;
    celda = fila.insertCell(-1);
    celda.innerHTML = datos.rows[i].haber;
    celda = fila.insertCell(-1);
    if(parseFloat(datos.rows[i].haber<0)){
    saldo = saldo+parseFloat(datos.rows[i].debe)-(-1)*parseFloat(datos.rows[i].haber);
    }
    saldo = saldo+parseFloat(datos.rows[i].debe)-parseFloat(datos.rows[i].haber);
    celda.innerHTML = saldo;
    celda = fila.insertCell(-1);
    var opciones = document.createElement('select');
    opciones.name = datos.rows[i].id;
    opciones.id = datos.rows[i].id;
    opciones.onchange = ejecutarAccion;
    celda.appendChild(opciones);
    for(j=0;j<3;j++){
    var opcion = document.createElement('option');
    opcion.appendChild(document.createTextNode(miArray[j]));
    opciones.appendChild(opcion);
    }
    }
    document.getElementById('n_fila').style.display='b lock';	
    delete datos;
    }
    }
    He probado con var datos = conexion.responseText.parseJSON() y tampoco me funciona.

    ¿Alguna solución?

    Gracias de antemano.

  2. #2
    Recien Llegado! Merodeador
    Fecha de Ingreso
    14 may, 12
    Mensajes
    9
    Poder de Reputación
    0
    Ya lo solucioné, era un problema de la caché, hay que poner la siguiente cabecera en los archivos php:
    header("Cache-Control: no-store, no-cache, must-revalidate");

  3. #3
    Moderador CCTW Habitante Avatar de johnpeterjp
    Fecha de Ingreso
    13 abr, 06
    Ubicación
    Santiago de Chile
    Mensajes
    3,181
    Poder de Reputación
    32
    Amigo md5 que bien que lo resolviste. Te recuerdo que debes poner títulos descriptivos a los mensajes o los enviaremos a la papelera para posteriormente eliminarse. Son normas de uso del foro. Gracias.

    http://www.comocreartuweb.com/consul...titulo-la-duda!!
    "Conocimiento es necesidad, necesidad es conocer lo que necesitamos"


Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •