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);
Código:
Mi código JS:[{"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"}]
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 i = 0, count = objJSON.length; i < count; i++){
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.value, true);
ajax.send(null);
}
}
}
He notado que cuando hago var objJSON = JSON.parse(ajax.responseText); me da el siguiente error:
Código:
Por lo que he buscado un poco y segun parece puede ser debido al formato incorrecto de la respuestaSCRIPT1014: Carácter no válido
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?