我知道有关此的几篇文章,但我想我缺少了一些。我正在ajax调用中返回下面的数据,但对于FLOT来说似乎格式不正确。是否有更好的格式来返回数据,或者应该更改以使FLOT能够识别它?TIA
<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; }
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序列化程序。
JavaScriptSerializer