2016-04-23 17 views
1

みんな働いていません。JSONデータの解析は、以下のJavaScriptコードを参照してください

$(document).ready(function() { 
$('.loader').hide(); 
getDataUsers("userCount"); 
var obj = JSON.parse($("#hdUserCount").val()); 
userChart(obj.Actives, obj.InActives, obj.Discountinued, obj.recentlyJoined); 
}); 
function userChart(act, inact, disc, recent) { 
var chart = new CanvasJS.Chart("userChart", { 

            title: { 
     text: "Users" 

    }, 
            animationEnabled: true, 
            axisX: { 
     interval: 1, 
     gridThickness: 0, 
     labelFontSize: 10, 
     labelFontStyle: "normal", 
     labelFontWeight: "normal", 
     labelFontFamily: "Lucida Sans Unicode" 

    }, 
            axisY2: { 
     interlacedColor: "rgba(1,77,101,.2)", 
     gridColor: "rgba(1,77,101,.1)" 

    }, 

            data: [{ 
               type: "bar", 
               name: "Users", 
               axisYType: "secondary", 
               color: "#014D65", 
               dataPoints: [ 

                { y: act, label: "Active" }, 
                { y: inact, label: "InActive" }, 
                { y: disc, label: "DisContinued" }, 
                { y: recent, label: "Recently Joined" }, 
               ] 
              } 

    ] 
           }); 

chart.render(); 
} 
function getDataUsers(flagData) { 
$('.loader').fadeIn('fast'); 
$.post("Stats.ashx", { 
      flag: flagData, 
     }, function (data, status) { 
      $("#hdUserCount").val(data); 
      $('.loader').fadeOut('fast'); 
      alert(data); 
     }); 
} 

、問題は、それがデバッグ放火犯モードとラインで実行したときに5から3には問題がないポイントを壊す持っているということで、すべてが良いです。 でも!ブレークポイントを削除すると、コードの一部が実行されていないと思います!有線!!!私は、JSONデータを解析する部分は動作していないと思います!

これはポストによって受信されたデータである。

{ "活性物質":3、 "不活性成分":4、 "割引な":0、 "recentlyJoined":6}

+0

私はあなたが思うブロックにおけるいくつかの 'はconsole.log()を'追加してみたいが実行されていません... – MarcoS

+0

これは非同期コードの仕組みではありません。そのDIVの内容を 'JSON.parse'しようとすると、投稿要求はまだ進行中です。したがって、あなたのdivにまだ' data'がありません。 – callback

+0

ニース!それは明らかに理由!私は私のポストを同期させるべきですか? –

答えて

1

それは非同期コードの仕組みではありません。これは、あなたの関数がどのように見えるかです:

function getDataUsers(flagData, callback) { 
    $('.loader').fadeIn('fast'); 
    $.post("Stats.ashx", { 
      flag: flagData, 
      }, function (data, status) { 
       callback(data); 
      } 
    }); 
} 

そしてあなたが好きそれを呼び出す:

getDataUsers('userCount', function(data) { 
     $("#hdUserCount").val(data); 
     $('.loader').fadeOut('fast'); 
     var obj = JSON.parse($("#hdUserCount").val()); 
     // Add the rest of code that relies on obj .. 
} 
+0

ニースとニース!ありがとう。あなたの例のようにちょうどそれをやった!ブレークポイントによる遅延が、コードが正しく実行された理由です。 –

+0

ようこそ。) – callback

関連する問題