2017-04-16 80 views
0

我想在我的代碼中使用AJAX並調用這樣的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); 

也是你的Web方法應該是這樣的:

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

    } 

希望它能幫助。