Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema en IE (nulo o no es un objeto)

Estas en el tema de Problema en IE (nulo o no es un objeto) en el foro de Frameworks JS en Foros del Web. Tengo armada una pagina que funciona muy bien en FF y Opera, pero en IE me da error. uso AJAX para comunicarme con un PHP ...
  #1 (permalink)  
Antiguo 02/04/2007, 17:13
 
Fecha de Ingreso: agosto-2003
Mensajes: 120
Antigüedad: 21 años, 2 meses
Puntos: 0
Problema en IE (nulo o no es un objeto)

Tengo armada una pagina que funciona muy bien en FF y Opera, pero en IE me da error.

uso AJAX para comunicarme con un PHP que toma datos de una base MySQL y los devuelve en formato JSON.


Código:
function sendQuerystring2(url,mod,columna)
{
	http2.open("GET", url, true);
	if (mod == "tabla") {
		http2.onreadystatechange = function (){
			if (http2.readyState == 4) {
				hide('cargando');
				if (http2.status == 200) {
					obj_detalle = eval('(' + http2.responseText + ')');
					crear_tabla(columna);
				}
			} else {
				show('cargando');
			}
		}	
	}
Código:
{"items":[{"id":"1","titulo":"Prueba"}]}
obj_detalle['items'][0].id, por ejemplo, me da como nulo en IE.

descarto un problema en el server-side, ya que en FF y Opera funciona sin ningun problema.

Alguien sabe que puede estar pasando? hace dias que estoy buscando la solucion y no encuentro nada.

muchas gracias
  #2 (permalink)  
Antiguo 02/04/2007, 18:43
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Re: Problema en IE (nulo o no es un objeto)

prueba haciendo lo siguiente

{items:[{id:1,titulo:"Prueba"}]}


unicamente le quitas las comillas a las propiedades, pues estas no deben llevarlas, las comillas son solo para representar strings, y una propiedad es muy diferente a un string, ahora cuando acceses a la información, lo harias asi:

obj_detalle.items[0].id

espero que con eso soluciones tu problemas, ademas te recomiendo leer un poco mas de JSON, te recomiendo este articulo

http://www.crysfel.com/leer.php?idEn..._en_JavaScript

have funnnnnnnn
  #3 (permalink)  
Antiguo 02/04/2007, 19:10
 
Fecha de Ingreso: agosto-2003
Mensajes: 120
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Problema en IE (nulo o no es un objeto)

Pero no hago ningun tipo de operacion con id.. lo uso como string.

de todas formas, probe sacandole las comillas y sigue dando el mismo error.

tambien probe referime al objeto como: obj_detalle.items en vez de obj_detalle['items'], pero no era ese el problema.
  #4 (permalink)  
Antiguo 03/04/2007, 14:09
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Problema en IE (nulo o no es un objeto)

loading.........

Código:
{
"items":
           [
              {
                "id":"1",
                "titulo":"Prueba"
              }
           ]
}
Hiciste JsonDecode(http2.responseText); ?
luego de eso, deberias poder acceder a tu objeto

obj_detalle.items[0].id

no puedes hacerle un eval directamente porque en IE

no existe esto
Código:
a={
   "algo":"1"
}
sino

Código:
a={
   algo:"1"
}
entonces deberias recibir.

Código:
{
items:
           [
              {
                id:"1",
                titulo:"Prueba"
              }
           ]
}
connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 03/04/2007, 15:02
 
Fecha de Ingreso: agosto-2003
Mensajes: 120
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Problema en IE (nulo o no es un objeto)

gracias por la respuesta.

MaBoRaK, probe quitando las comillas a items, id y titulo, pero sigue fallando en IE. sigo haciendo un eval. que es JsonDecode()? es una funcion que viene con javascript?
  #6 (permalink)  
Antiguo 03/04/2007, 15:42
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Problema en IE (nulo o no es un objeto)

loading.......


osea, dices que devuelves en formato JSON desde PHP en javascript debes capturar igual con JSON pero de lado de Javascript (json.js)

connection closed.
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 03/04/2007, 15:44
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Problema en IE (nulo o no es un objeto)

loading.......

Y asi haces

eval(http2.responseText);

???


connection closed.
__________________

Maborak Technologies
  #8 (permalink)  
Antiguo 03/04/2007, 22:05
 
Fecha de Ingreso: agosto-2003
Mensajes: 120
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Problema en IE (nulo o no es un objeto)

estuve buscando sobre esto:

la pagina de JSON dice:

Cita:
To convert a JSON text into an object, use the eval() function. eval() invokes the JavaScript compiler. Since JSON is a proper subset of JavaScript, the compiler will correctly parse the text and produce an object structure.

var myObject = eval('(' + myJSONtext + ')');
asi que eso esta bien..

tambien encontre esto:

Cita:
Requirements of Eval for JSON Expressions

With JSON you will be using eval. Keep the data sizes small.
y los datos que yo paso son muy grandes... creo que ahi puede estar el problema. firefox no tiene limite con eval() mientras que IE, si.. aunque no estoy seguro de esto, es solo una conclusion que saque.
alguien sabe algo de esto?
  #9 (permalink)  
Antiguo 04/04/2007, 22:47
 
Fecha de Ingreso: agosto-2003
Mensajes: 120
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Problema en IE (nulo o no es un objeto)

ahora si que no se muy bien como salir de esto..

suponiendo que el problema esta en el largo del string al que le aplico la funcion eval.. use el archivo json.js e hice un parseJSON() al string. sin embargo, esto sigue funcionando en Mozilla, pero el IE da exactamente el mismo error.

me fije en el contenido de la funcion y tiene un eval adentro, asi que no hay mucho cambio.

estoy bastante perdido sobre como salvar esta situacion.. a alguien se le ocurre algo?
  #10 (permalink)  
Antiguo 05/04/2007, 13:36
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Re: Problema en IE (nulo o no es un objeto)

mira, tu funcion que recibe la respuesta deberia estar algo asi:

function esperandoRespuesta(response){
var obj = eval(response.resposeText);
alert(obj.items[0].id);
}

eso deberia sacar un alert con un 1

esto no deberia fallarte.....

have funnnnnnnn
  #11 (permalink)  
Antiguo 05/04/2007, 14:33
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Problema en IE (nulo o no es un objeto)

loading.............


Estas seguro de que la linea que marca error es el de tu proceso AJAX? ¬¬ no será otra cosa?.
O mejor aun, sube la web aun server y asi vemos nosotros cual es la falla.


connection closed.
__________________

Maborak Technologies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:14.