Ajax не вызывает функцию c #, но это успех. Как? - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь нарисовать диаграмму, используя диаграммы 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 !!!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...