2

我正在尝试从 AJAX 请求呈现 jqPlot 条形图,但我无法让它工作。

我有以下 JavaScript 代码:

var ajaxDataRenderer = function (url, plot) {
   var ret = null;
   $.ajax({
      // have to use synchronous here, else returns before data is fetched
      async: false,
      url: url,
      contentType: "application/json; charset=utf-8",
      dataType: 'json',
      success: function (data) {
         ret = data;
      }
   });
   return ret;
};

var jsonurl = "WebService1.asmx/HelloWorld";

plo12 = $.jqplot('chart2', jsonurl, {
   title: 'AJAX JSON Data Renderer',
   dataRenderer: ajaxDataRenderer,
   seriesDefaults: {
      renderer: $.jqplot.BarRenderer,
      rendererOptions: {
         // Put a 30 pixel margin between bars.
         barMargin: 30,
         // Highlight bars when mouse button pressed.
         // Disables default highlighting on mouse over.
         highlightMouseDown: true
      },
      pointLabels: { show: true }
   },
   axes: {
      xaxis: {
         renderer: $.jqplot.CategoryAxisRenderer
      },
      yaxis: {
         // Don't pad out the bottom of the data range.  By default,
         // axes scaled as if data extended 10% above and below the
         // actual range to prevent data points right on grid boundaries.
         // Don't want to do that here.
         padMin: 0
      }
   },
   legend: {
      show: true,
      location: 'e',
      placement: 'outside'
   }
});

我的WebService1.asmx样子是这样的:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService {

    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public string HelloWorld()
    {
        return "[[2],[7],[14]]";
    }
}

我已经看到了这个解决方案,但我对此并不陌生,我无法弄清楚我的问题是什么。

4

3 回答 3

0

您可以尝试设置 ret = [data]

jqPlot 需要一个数组格式的对象来呈现图表。

谢谢

于 2014-01-22T12:17:35.253 回答
0

我正在通过 GWT 使用这个 JQplot 库。确保您已加载 .JS 文件,如 jquery.jqplot、bar 渲染等。我认为它会起作用,或者如果您已经检查过,我可能是错的。

于 2012-05-03T04:59:35.310 回答
0

请注意,在您提供的解决方案的链接中/,jsonurl 字符串的前面。这也可能是它。

这也可以通过您发送的请求的 url 看到,例如,在firebug控制台中。

否则,您可以仔细检查该方法是否返回任何内容?只需在没有图表的情况下运行它并将它提供给控制台的任何内容输出即可。

除此之外,我认为js代码中没有任何问题。

于 2012-05-03T09:59:29.003 回答