Tengo un DoughnutChart gráfico y me gustaría cambiar el color de sus partes en relación con los colores hexa-códigos guardados en la base de datos he utilizado este método Ajax para obtener el color de la cadena mediante la invocación de un método de acción que devuelve el Resultado en JSON ,

    getcolors: function getcolors(name) {
    return $.ajax({
        url: "/api/ideas/getcolors",
        data: { name: name },
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data, textStatus, jqXHR) {
           //return  data;
        },
        error: function (data) {
          //return  "Failed";
        },
        async: true
    });

pero en vez de recibir la cadena recibí Objeto {readyState: 1} en la ventana de la consola Regresando de la Cadena de Resultado del Ajax Método

Sin embargo, no puedo encontrar el valor de color almacenados en ResponseText elemento.Necesito su ayuda ¿cómo puedo obtener el valor de color como de cadena.

EDICIÓN :

Para hacer las cosas más claras que es donde me gustaría invocar el ajax método para recibir el color de la cadena, a continuación, voy a ser capaz de empujar en el gráfico de matriz de colores .

getColorArray: function getColorArray(categories) {
        var colors = [];
        for (var i = 0; i < categories.length; i++) {
            console.log(this.getcolors("Risk"));
            //colors.push(this.getcolors(categories[i]));
        }

        return colors;
    }
  • No está claro lo que se muestra en la consola, es ‘datos’ o ‘jqXHR’. Sospecho que es el último. Desea utilizar el parámetro de datos para su éxito de la función.
  • el éxito y la función de error cant devolver nada porque regresar a la función de ajax 😉 modificar eliminar regresar antes de $.ajax y probar de nuevo. y normalmente en el éxito de datos de la función debe contener jqXHR.responseText
  • Traté de quitar el retorno de la función de ajax pero todavía tengo que devolver el color hexadecimal cadena de este método de todos modos 🙂 .. ¿puedo preguntarle si usted puede escribir un simple ejemplo para que ?
  • En realidad yo no escribo nada en el éxito o error de la función .. todo lo que necesitas es recibir el color hexadecimal cadena desde el método.
InformationsquelleAutor Ahmed Elbatt | 2017-03-08

2 Comentarios

  1. 2

    Por qué el código es como este?

    success: function (data, textStatus, jqXHR) { 
       //return  data;
    },

    Utilizaste?

    success: function (data, textStatus, jqXHR) {
       console.log(data);
    }

    Ok, lo tengo. Cuando se utiliza una petición ajax a su voluntad de trabajar con datos asincrónica, para hacer esto usted necesita devolver una promesa en su método. Por favor, trate de usar el código de abajo.

    getcolors: function getcolors(name) {
        return $.ajax({
           url: "/api/ideas/getcolors",
           data: { name: name },
           type: "GET",
           contentType: "application/json; charset=utf-8",
           dataType: "json",
        });
    }

    Y para el uso de su función de utilizar este código:

    getcolors("name").done(function(result){
        console.log(result);
    });

    O puede utilizar una devolución de llamada

    getcolors: function getcolors(name, success, error) {
        return $.ajax({
           url: "/api/ideas/getcolors",
           data: { name: name },
           type: "GET",
           contentType: "application/json; charset=utf-8",
           dataType: "json",
           success: function(data){
               success(data);
           },
           error: function(data){
               error(data);
           }
        });
    }

    … Y para su uso con las devoluciones de llamada:

    getcolors("name", function(data){
        //success function
        console.log(data);
    }, function(){
        //Error function
        console.log(data);
    })

    Probar una de estas opciones y diga el resultado.

    • Sí, lo hice y me tengo exactamente el color hexadecimal código .. pero necesito pasar este valor a otro JS método para colorear el gráfico partes !
    • Para la primera solución traté de hacer lo que usted escribió, pero no recibí ningún tipo de resultados, y para el segundo que recibió Uncaught ReferenceError: datos no está definido en la ventana de la consola.
    • Gracias Mateus , tu solución me ayuda mucho a través de mi camino para encontrar la solución :).
    • Se puede dar un cheque en mi respuesta? 😉
    • Muchas gracias 😉
  2. 1

    La Solución

    Primero de todo me gustaría agradecer a Mateus Koppe por sus esfuerzos, a través de su solución conseguí la manera de solucionar mi problema ..
    Lo que hice simplemente es simplemente he recibido el ResponseText de la entrantes resultado exitoso en mi Ajax método y, a continuación, me pasa a una función de devolución de llamada que maneja el resultado como el siguiente :

    getcolors: function getcolors(name, handleData) {
    $.ajax({
        url: "/api/ideas/getcolors",
        data: { name: name },
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            handleData(data.responseText);
            //return data.responseText;
        },
        error: function (data) {
            handleData(data.responseText);
            //return data.responseText;
        },
        async: false
    });

    entonces yo trabajaba con getColorArrayModified un bucle a través de mi lista de categorías y de llenar su propio color.

        getColorArrayModified: function getColorArrayModified(categories) {
        var colors = [];
        for (var i = 0; i < categories.length; i++) {
            this.getcolors(categories[i], function (output) {
                colors.push(output);
            });
        }
        return colors;
    }

    Gracias por todo :).

Dejar respuesta

Please enter your comment!
Please enter your name here