2017-04-16 9 views
0

私のコードでAJAXを使い、このようなWebメソッドを呼び出そうとしています。WebメソッドAJAXでリソースを読み込めません

function generate_source(year_source, month_source) { 
      var gData_source = ''; 
      if (year_source) { 
       gData_source = []; 
       gData_source[0] = year_source; 
       gData_source[1] = month_source; 
       console.log('first part'); 
      } 
      else { 
       var d_source = new Date(); 
       gData_source = []; 
       gData_source[0] = d_source.getFullYear(); 
       gData_source[1] = d_source.getMonth() + 1; 
       console.log('second part'); 


      } 
      var jsonData_source = JSON.stringify({ 
       gData_source: gData_source 
      }); 


      var ctx = document.getElementById("order_source").getContext('2d'); 
      $.ajax({ 

       url: "dashboard.aspx/getordersource", 
       data: jsonData_source, 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       beforeSend: function() { 
        $("#loader_divsource").show(); 
       }, 
       success: function (response) { 
        $("#loader_divsource").hide(); 
        var chartLabel = eval(response.d[0]); //Labels 
        var chartData = eval(response.d[1]); //Data 

        var myChart = new Chart(ctx, { 
         type: 'doughnut', 
         data: { 

          labels: chartLabel, 
          datasets: [ 
           { 
            type: 'doughnut', 
            label: chartLabel, 
            data: chartData, 
            backgroundColor: [ 
             "#FF6384", 
             "#36A2EB", 
            ], 
            hoverBackgroundColor: [ 
             "#FF6384", 
             "#36A2EB", 
            ] 

           } 

          ] 
         } 
        }); 

       } 

      }); 


     } 
     var d_source = new Date(); 
     gData_source = []; 
     $('#year_source').val(d.getFullYear()); 
     $('#month_source').val(d.getMonth() + 1); 
     generate_source('', ''); 

私のWebメソッドは次のとおりです。私はこのデータを実行しようとするたびに

[System.Web.Services.WebMethod] 
    public static List<string> getordersource(List<int> gData) 
    { 
     DataSet ds = ws_db.get_Dataset_order_source(); 
     var returnData = new List<string>(); 

    ...... 
     return returnData; 

    } 

、Webメソッドのための私のブレークポイントがヒットされていません。さらに、データなしで同じメソッドを使用すると、このエラーは発生しません。それは私を夢中にさせている。

+0

コンソールのエラーをチェックしましたか? – gaganshera

+0

はい、それは私に "リソースを読み込めませんでした:サーバーが500(内部サーバーエラー)のステータスで応答しました" – user1377504

+0

"私はデータなしで同じメソッドを使用する場合、私はこのエラーが発生しません" ? – gaganshera

答えて

0

私はあなたの問題は、このコードではあると思う:

var jsonData_source = JSON.stringify({ 
       gData_source: gData_source 
      }); 

あなたはそれが無効になっていることを、キーと値のペアを持つ配列をシリアル化しようとしています。これに 変更:

var jsonData_source = JSON.stringify(gData_source); 

また、ウェブメソッドは次のようにする必要があります:

[System.Web.Services.WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.JSON)] 
    // just return a string, not list, your JSON string should have contain all your enumerable in your string Data 
    public static string getordersource(List<int> gData) 
    { 
     DataSet ds = ws_db.get_Dataset_order_source(); 
     JsonSerializer serializer = new JsonSerializer(); 
     var returnData = serializer.serialize(ds); 

    ...... 
     return returnData; 

    } 

はそれがお役に立てば幸いです。

関連する問題