Я пытаюсь нарисовать диаграмму, используя диаграммы Google.
Мой код вызова C # через Ajax для получения данных из базы данных. Дубагер не переходит в функцию c #, но он ударил функцию успеха ajax!
Aspx:
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawchart);
function drawchart(dataValues)
{
alert("drawing function");
alert(Object.keys(dataValues).length); //alert 3
alert(Object.keys(dataValues)); // alert Message, StackTrace,ExceptionType
alert(Object.values(dataValues)); // alert Authentication failed.,,System.InvalidOperationException
var data = new google.visualization.DataTable();
data.addColumn('string', 'Column Name');
data.addColumn('number', 'Column Value');
for (var i = 0; i < dataValues.length; i++) {
data.addRow([dataValues[i].gender, dataValues[i].cnt]);
}
new google.visualization.PieChart(document.getElementById('myChartDiv')).draw(data, { title: "Google Chart in Asp.net using jQuery" });
}
$(document).ready(function () {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
url: 'Default.aspx/getGenderCount1',
data: '{}',
success:
function (data, textStatus, xhr) {
alert(data + "\t" + textStatus);
drawchart(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
alert("Error loading data!");
}
});
})
</script>
Оповещения выглядят так:
[object Object] success
drawing function
3
Message,StackTrace,ExceptionType Authentication
failed.,,System.InvalidOperationException
drawing function
1
isTrusted
true
C #:
public Static List<ParticipantGender> getGenderCount1()
{
List<ParticipantGender> ListOfParticipantGender = new List<ParticipantGender>();
var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
try
{
cmd = new SqlCommand("getGenderCount", conn);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
while (rdr.Read())
{
ListOfParticipantGender.Add(
new ParticipantGender
{
cnt = rdr.GetValue(0).ToString(),
gender = rdr.GetValue(1).ToString(),
});
}
}
catch
{
}
finally
{
cmd.Dispose();
conn.Close();
}
return ListOfParticipantGender;
}
Я также попробую следующее:
публичная строка getGenderCount1 () и возвращать результат как: var json
= JsonConvert.SerializeObject (ListOfParticipantGender); возврат json;
Нарисовать график без данных. я понимаю, что когда я отлаживаю "getGenderCount1" в c #, он не отлаживается. Но когда я помещаю код в функцию загрузки и отслеживаю данные, поступающие из базы данных, это на 100% верно.
Кажется, что ajax не вызывает c #, но обрабатывает функцию успеха ajax !!!!