2017-03-08 24 views
1

私はDoughnutChartチャートを持っており、データベースに保存されているカラーヘキサコードに関する色を変更したいと思います。このAjaxメソッドを使用して、返すJSON結果、 Ajaxメソッドから文字列を返す

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 
    }); 

ではなく、私はオブジェクト{readyStateの:1}受け取った文字列を受け取るの

enter image description here

しかし、コンソールウィンドウで、私はResponseText element.Iに格納された色値を見つけることができるものが必要ですあなた色値を文字列として取得する方法を教えてください。

EDIT:

私は、私は、チャートの色配列にプッシュすることができます色の文字列を受け取るためにAjaxのメソッドを呼び出すしたいところだ物事をより明確にします。

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; 
    } 
+0

コンソールに表示されている内容が不明です(「データ」または「jqXHR」)。私はそれが後者だと思う。成功関数にdataパラメーターを使用したいとします。 – MikeS

+0

成功とエラー関数は、ajax関数を返すので何も返しません;)$ .ajaxの前にreturnを取り除いて修正し、もう一度やり直してください。成功の関数データには正常にjqXHRが含まれているはずです。responseText – mtizziani

+0

@mtizziani私はajax関数からの戻り値を取り除こうとしましたが、このメソッドのカラーヘキサ文字列を返す必要があります:)。簡単な例を書くことができますか? – FreedomDeveloper

答えて

1

なぜこのようなコードですか?

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

使用しましたか?

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

[OK]を取得しました。非同期データを処理するajaxリクエストを使用する場合、これを行うには、メソッドで約束を返す必要があります。下のコードを試してみてください。

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

そして、あなたの機能の使用は、このコードを使用する:

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

それとも、

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); 
     } 
    }); 
} 

...とコールバックで使用するためのコールバックを使用することができます。

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

このオプションのいずれかを試して、結果を伝えてください。

+0

はい、私は正確に色16進コードを得ました。しかし、この値を別のJSメソッドに渡して、チャートの色を塗りつぶす必要があります。 – FreedomDeveloper

+0

最初の解決策では、あなたが書いたことをしようとしましたが、何の結果も得られませんでした。そして、2番目のものについて、Uncaught ReferenceErrorを受け取りました:データがコンソールウィンドウで定義されていません。 – FreedomDeveloper

+1

ありがとう、マテウス、あなたの解決策は私の解決策を見つけるためにあまりにも助けてくれます:)。 – FreedomDeveloper

1

ソリューション

私は彼の努力のためのマテウスKoppeに感謝したいと思いますまず第一に、彼のソリューションを通じて、私は私の問題を解決する方法を得た。.. 私は単純にやったことはちょうど私がResponseTextを受信します私のAjaxの方法では、受信成功した結果から、その後、私は次のような結果を処理するコールバック関数に渡さ:

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 
}); 

その後、私は私のカテゴリリストをループにgetColorArrayModifiedと協力し、独自の色を取り込みます。

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; 
} 

ありがとうございました。