Tema: JSON php
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2012, 05:24
jgm_sala
 
Fecha de Ingreso: abril-2012
Mensajes: 45
Antigüedad: 12 años, 1 mes
Puntos: 1
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:
<?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:
Ver original
  1. function procesarEventos1(){
  2.     var tabla = document.getElementById('cuenta');
  3.  
  4.     if(conexion.readyState == 4){
  5.         alert(conexion.responseText);
  6.  
  7.         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;
}
}[/HIGHLIGHT]

He probado con var datos = conexion.responseText.parseJSON() y tampoco me funciona.

¿Alguna solución?

Gracias de antemano.