Tengo una llamada AJAX que estoy usando para obtener algunos datos de una base de datos.

$.ajax({
    url: URL + '/main/noc/html_forms/query.cfm',
    type: 'GET',
    dataType: 'json',
    data: {
        dataset: 'Users'
    },
    async: false,
    timeout: 5000,
    cache: false,
    success: function(data) {            
        var result = data.result;
        console.log(result);
    }
});

Puedo ver desde la consola que los datos se recuperaron con éxito, excepto que no puedo imprimir estos datos en un elemento ID de DOM. Incluso si hago un document.write(result);, el texto que se muestra en la pantalla es

[object Object],[object Object],[object Object]

Una vez más, los datos se recuperan con éxito porque puedo verlos, simplemente no puedo acceder a ellos.

enter image description here

Sé que esta es probablemente una pregunta tonta y terminará siendo algo que puedo aprender en una clase 101, pero ¿alguien puede explicar qué está sucediendo aquí y cómo puedo obtener mis datos?

0
iviouse 17 feb. 2017 a las 08:21

3 respuestas

La mejor respuesta

En su captura de pantalla publicada, parece que está obteniendo el resultado de la llamada AJAX como una forma de Matriz. Por lo tanto, para acceder a sus datos, probablemente deba hacer algo como ... document.write(result[0].user_name) o

 $.ajax({
     url: URL + '/main/noc/html_forms/query.cfm',
     type: 'GET',
     dataType: 'json',
     data: {
         dataset: 'Users'
     },
     async: true,
     cache: false,
     success: function(data) {
         var result = data.result;
         for (var i = 0; i < result.length; i++) {
             document.write(result[i].user_name);
         }
         console.log(result);
     }
 });

Espero que esto ayude.

1
m87 17 feb. 2017 a las 05:57
success: function(data) {     
           $.each(data,function(index,obj)
           {
               console.log('object ' + index);
               $.each(obj,function(key,value)
               {
                   console.log(key + ':' + value);
               });       
           });
    }

Está obteniendo una matriz de objetos del servidor. No puedes imprimir eso directamente. Debe recorrer esta matriz para imprimir los valores. Para esto, puede utilizar la función jquery $.each para iterar primero a través de la matriz de objetos y luego nuevamente para iterar a través de todos los pares clave-valor de cada objeto. Puede leer acerca de la función $.each aquí

0
Akshey Bhat 17 feb. 2017 a las 05:52

Su código está bien, pero en el caso de que esté devolviendo una matriz de objetos, debe modificar su código de esta manera

 $.ajax({
url: URL + '/main/noc/html_forms/query.cfm',
type: 'GET',
dataType: 'json',
contentType:'application/json;charset=utf-8',
data: {
    dataset: 'Users'
},
async: false,
timeout: 5000,
cache: false,
success: function(data) {            
   alert(data[0].user_name);
    console.log(result);
}
});
1
Amit Yadav 17 feb. 2017 a las 05:31