2013-01-16 36 views
2

我知道有几个关于这个帖子,但我认为我失去了一些东西。我在ajax调用中返回下面的数据,但它似乎没有适用于FLOT的格式。是否有更好的格式来返回数据或更改FLOT以识别它? TIA将Ajax数据转换为正确格式的FLOT图表?

<script type="text/javascript"> 
    $(document).ready(function() { 
     // Add the page method call as an onclick handler for the div. 
     $("#Result").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "WebTest.aspx/GetData", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        // Replace the div's content with the page method's return. 

        var jsObj = [] 
        jsObj.push($.parseJSON(msg.d)); 

        $.plot($("#Result"), jsObj, { 
         grid: { 
          backgroundColor: "#E5E5E5", 

          mouseActiveRadius: 20 
         } 


        } 
       ); 
       } 
      }); 
     }); 
    }); 
</script> 


[WebMethod] 
public static string GetData() 
{ 

    DataLines dataLine1 = new DataLines(); 
    DataLines dataLine2 = new DataLines(); 


    int[] lineA_Point1 = new int[] { 4, 6 }; 
    int[] lineA_Point2 = new int[] { 2, 10}; 

    List<int[]> dataA = new List<int[]>(); 
    dataA.Add(lineA_Point1); 
    dataA.Add(lineA_Point2); 

    dataLine1.data = dataA; 
    dataLine1.label = "DataLine1"; 

    JavaScriptSerializer js = new JavaScriptSerializer(); 

    string Line1 = js.Serialize(dataLine1); 

    return Line1; 
} 
+0

在您的例子是msg.d。应该是d?如果是这样,d应该是一个javascript数组,而不是一个看起来像一个javascript数组的字符串。 – Mark

+0

我在这里添加了服务器端代码,我试图创建这些行 - 是否需要在这里进行更改? – Blake

+0

不,你的web方法返回一个正确的JSON字符串,你需要将它转换回一个JavaScript对象,试试:'d = $ .parseJSON(d)' – Mark

回答

7

1)转换JSON字符串回JavaScript对象在JavaScript:

var jsObj = $.parseJSON(d); // using jquery method 

2)在你的GetData方法,您

dataLine1.data = "[[1356328800000,5],[1356933600000,3]]"; 

不去上班。这将使您的数据元素成为JSON中的字符串而不是JavaScript数组。这将是最好在你的WebMethod解决这个问题:

DataLines dataLine1 = new DataLines(); 
dataLine1.data = new List<int[]>(); 
dataLine1.data.Add(new int[] {1356328800000,5}); 
dataLine1.data.Add(new int[] {1356933600000,3}); 

这是没有经过测试的(我从来没有使用以前JavaScriptSerializer,但类似的代码可与ServiceStack串行

+0

感谢马克 - 这是一种工作的味道。日期现在是问题,因为它不是一个整数。 – Blake

+0

没关系...我只是改变了它[],并照顾它 – Blake