Tengo un gráfico de DoughnutChart y me gustaría cambiar el color de sus partes con respecto a los códigos hexadecimales de color guardados en la base de datos. Utilicé este método Ajax para obtener la cadena de color invocando un método de acción que devuelve JSON Result,
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 lugar de recibir la cadena, recibí el Objeto {readyState: 1} en la ventana de la consola 
Sin embargo, puedo encontrar el valor del color almacenado en el elemento ResponseText. Necesito su ayuda sobre cómo puedo obtener el valor del color como cadena.
EDITAR :
Para dejar las cosas más claras, ahí es donde me gustaría invocar el método ajax para recibir la cadena de colores y luego podré insertar la matriz de colores del gráfico.
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; }¿Por qué tu código es así?
success: function (data, textStatus, jqXHR) { // return data; },¿Lo usaste?
success: function (data, textStatus, jqXHR) { console.log(data); }Bien, lo tengo. Cuando usa una solicitud ajax, trabajará con datos asincrónicos, para hacer esto necesita devolver una promesa en su método. Por favor, intenta 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 usar su función use este código:
getcolors("name").done(function(result){ console.log(result); });O puede usar 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 usar con devoluciones de llamada:
getcolors("name", function(data){ //success function console.log(data); }, function(){ //Error function console.log(data); })Pruebe una de estas opciones y diga el resultado.
La solución
En primer lugar, me gustaría agradecer a Mateus Koppe por sus esfuerzos, a través de su solución obtuve la forma de resolver mi problema. a una función de devolución de llamada que maneja el resultado de la siguiente manera:
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 });luego trabajé con getColorArrayModified para recorrer mi lista de categorías y completar 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 :).