Я пытаюсь использовать JQPlot в приложении VB.NET под .NET 3.5. При нажатии кнопки с помощью jquery я пытаюсь заполнить диаграмму JQPlot данными, полученными из JSON, с помощью исходного файла веб-служб ASP.NET (который является частью решения).
Данные JSON отправляются веб-службой, но когда они представляются в JQPlot, я получаю ошибку javascript «Данные не указаны», которая генерируется кодом JQPlot.
Мой листинг кода выглядит следующим образом:
Код для прослушивания нажатия кнопки:
$(document).ready(function () {
$('#<%=btnASMX1.ClientID%>').click(function () {
getElectricDataJSON();
return false;
});
});
Код Javascript вне функции document.ready:
function ajaxDataRenderer() {
var ret = null;
$.ajax({
// have to use synchronous here, else the function
// will return before the data is fetched
async: false,
//url: url,
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: "AccountsService.asmx/GetJSONData",
data: "{AccountID: " + $('#<%= hiddenAccountID.ClientID%>').val() + " }",
dataType: "json",
success: function (response) {
var ret = response.d;
// The following two lines just display the JSON data for testing purposes
$('#<%=outputASMX.ClientID%>').empty();
$('#<%=outputASMX.ClientID%>').html("<div>" + ret + "</div>");
return ret;
},
error: function (request) {
$('#<%=outputASMX.ClientID%>').html("<div style='color:red;'>WEBSERVICE UNREACHABLE</div>");
}
});
return ret;
};
var jsonurl = "./jsondata.txt";
function getElectricDataJSON() {
var ret = ajaxDataRenderer();
var plot1 = $.jqplot('chart2', jsonurl, {
title: "AJAX JSON Data Renderer",
dataRenderer: ret, //$.jqplot.ciParser
dataRendererOptions: {
unusedOptionalUrl: jsonurl
}
});
}
Формат данных JSON следующий:
[ { "todate": "2013-09-23T00:00:00", "Bill": 7095.65 }, { "todate": "2013-08-22T00:00:00", "Bill": 1137.96 }, { "todate": "2013-07-24T00:00:00", "Bill": 220429.41 }, ... ]
Любая помощь или совет будут оценены.
var ret = ajaxDataRenderer();
в функции getElectricDataJSON () я вставилvar ret = JSON.parse(ret);
, а затем // Теперь помещаем необходимые данные в объект массива JSON var sampleData = [], item; $ .each (ret, function (key, value) {sampleData.push ([value.todate, parseFloat (value.Bill.replace (/, / g,))]);}); - person normality2000   schedule 23.10.2013