2012-05-02 1 views
2

Я пытаюсь отобразить диаграмму jqPlot из запроса AJAX, и я не могу заставить его работать.dataRender в jqPlot ASP.NET из запроса AJAX

У меня есть следующий код 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]]"; 
    } 
} 

Я видел this решение, но я новичок в этом, и я не могу понять что моя проблема.

ответ

0

Я использую эту библиотеку JQplot через GWT. Убедитесь, что вы загрузили файлы .JS, такие как jquery.jqplot, bar render и т. Д. Я думаю, что это сработает, или я могу ошибаться, если вы уже проверили это.

0

Обратите внимание, что по ссылке, которую вы предоставляете, есть / перед строкой jsonurl. Это может быть и так.

Это также можно увидеть, просматривая URL-адреса запросов, отправляемых, например, в консоли firebug.

В противном случае вы можете проверить, что метод возвращает что-либо? Просто запустите его без графика и выведите все, что он дает консоли.

Кроме этого, я не вижу проблем в коде js.

0

Вы можете попробовать с установкой в ​​отставке = [данные]

jqPlot ожидает объект в виде массива для отображения графики.

С благодарностью

Смежные вопросы