来自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期望数组格式的对象呈现图表。
谢谢