Foros del Web » Programando para Internet » Javascript »

IE no coge bien una respuesta JSON

Estas en el tema de IE no coge bien una respuesta JSON en el foro de Javascript en Foros del Web. Estoy intentando hacer un formulario de autocompletado con JavaScript y devolviendo una respuesta JSON. Me funciona correctamente en todos los navegadores pero, como no, en ...
  #1 (permalink)  
Antiguo 03/02/2013, 13:00
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 10 meses
Puntos: 11
IE no coge bien una respuesta JSON

Estoy intentando hacer un formulario de autocompletado con JavaScript y devolviendo una respuesta JSON. Me funciona correctamente en todos los navegadores pero, como no, en IE no funciona.

Aquí tengo el código PHP que devuelve la respuesta:

Código PHP:
$ciudades $this->_ciudad->obtenerTodasPorNombre($ciudad);
            foreach(
$ciudades as $ciudad){
                
$arr_ciudades[] = array(
                    
'id_ciudad' => $ciudad->getId(),
                    
'nombre_ciudad' => $ciudad->getNombre(),
                    
'pais_relacion' => $ciudad->getPaisRelacion(),
                    
'value' => $ciudad->getNombre()
                );
            }
            
$this->view->jsonData json_encode($arr_ciudades); 
Me devuelve lo siguiente:

Código:
[{"id_ciudad":1,"nombre_ciudad":"Nueva York","pais_relacion":1,"value":"Nueva York"},{"id_ciudad":52,"nombre_ciudad":"Nueva Orleans","pais_relacion":1,"value":"Nueva Orleans"},{"id_ciudad":801,"nombre_ciudad":"Nuenen","pais_relacion":4,"value":"Nuenen"}]
Mi código JS:

Código PHP:
function search_cities_autocomplete(){
    var 
input document.getElementById('ciudad_busqueda');
    var 
id_select document.getElementById('cities_list');
    
    
input.onkeyup = function(){
        if(
input.value.length >= 3){
            
id_select.style.display "block";
            
            var 
ajax getXMLHttpRequestObject();
            
ajax.onreadystatechange = function(){
              if(
ajax.readyState == 4){
                  if((
ajax.status >= 200 && ajax.status 300) || (ajax.status == 304)){
                      if(
ajax.responseText.length 2){

                          var 
objJSON JSON.parse(ajax.responseText);                          
                          var 
output "";                         
                          for(var 
0count objJSON.lengthcounti++){
                            
output += "<p class='elem' onclick='getValue(this," input.id ", " id_select.id ")'><img src='/img/icons/countries/" objJSON[i].pais_relacion ".png' class='ico'>" objJSON[i].nombre_ciudad "</p>";                            
                          } 
                          
//    imprimimos el resultado en la capa 'ciudad_array_select_i'                        
                          
id_select.innerHTML output;
                      }
                      else{
                          
id_select.innerHTML "<p style='margin-top: 0; margin-bottom: 0; background-color: pink'><img src='/img/icons/disable.png'> Sin resultados</p>";
                      }
                  }
                  else{
                      
id_select.innerHTML 'Error' ajax.statusText;
                  }
              }  
            };
            
ajax.open('GET''/usuarios/index/obtenerciudadesjson/ciudad/' input.valuetrue);
            
ajax.send(null);
        }
    }

En principio no deberia haber ningun problema pero no me da ninguna respuesta, de hecho no me muestra ni la capa que deberia contener los resultados.
He notado que cuando hago var objJSON = JSON.parse(ajax.responseText); me da el siguiente error:

Código:
SCRIPT1014: Carácter no válido
Por lo que he buscado un poco y segun parece puede ser debido al formato incorrecto de la respuesta

http://msdn.microsoft.com/es-es/libr...(v=vs.94).aspx

No obstante yo no veo ningun tipo de error, e incluso parseando la respuesta mediante un parser online me coge todos los campos correctamente.

¿Alguien sabe a que se debe?

Última edición por miwelillo; 03/02/2013 a las 13:34

Etiquetas: ajax, campos, formulario, funcion, jquery, js, json, php, respuesta
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 14:19.