来自AJAX请求的jqPlot ASP.NET中的dataRender

我试图从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]]"; } } 

我已经看到了这个解决方案,但我是新手,我无法弄清楚我的问题是什么。

我正在通过GWT使用这个JQplot库。 确保你已经加载了.JSery文件,如jquery.jqplot,条形渲染等等。我认为它会起作用,如果你已经检查了这个,我可能会错。

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

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

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

除此之外,我在js代码中看不出任何问题。

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

jqPlot期望数组格式的对象呈现图表。

谢谢