Как вернуть список объектов используя Ajax и Asp.net? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь вернуть список объектов из кода на стороне сервера через ajax.Он успешно возвращается, но я не могу извлечь.

Код Jquery

$.ajax({
            type: "POST",
            contentType: "application/json;charset=utf-8",
            url: "MyWebService.asmx/Execute_SequenceNo",

            data: JSON.stringify({
                "journalEntry": $('#ContentPlaceHolder1_txtJournalEntry').val().trim()
            }),
            dataType: "json",
            success: function (data) {
                alert("Success = " + data.d.length + ', Data 0 =' + data.d[0] + ' ' + data.d[1])
            },
            error: function (result) {


            }
        })

Приведенный ниже код для получения записей с моего сервера Sql

WebService

[WebMethod]
    public SequenceNumber[] Execute_SequenceNo(string journalEntry)
    {
        DataTable dt = new DataTable();
        List<SequenceNumber> details = new List<SequenceNumber>();
        try
        {
            string cs = ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString;

            using (SqlConnection con = new SqlConnection(cs))
            {
                SqlCommand cmd = new SqlCommand("spTest", con);
                cmd.CommandType = CommandType.StoredProcedure;


                con.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                foreach (DataRow drow in dt.Rows)
                {


                    sequence.errorMsg = "Valid";
                    details.Add(sequence);
                }
            }
            return details.ToArray();
        }
        catch (Exception ee)
        {
            //return "NotValid error = " + ee.ToString();
            SequenceNumber sequence = new SequenceNumber();
            sequence.errorMsg = "NotValid";
            return details.ToArray();
        }


    }

он успешно возвращается, но мое предупреждение похоже на ниже

Вывод

Success = 2, Data 0 =[object Object] [object Object]

1 Ответ

0 голосов
/ 03 января 2019

Ваш код работает нормально. Просто кажется, что вы ожидаете, что alert() сделает что-то большее, чем это делает. Он не сериализует объекты и не отображает какое-либо заданное свойство, которое может потребоваться от этих объектов. Все, что не является примитивным значением, просто отображается как:

[object Object]

Самый простой подход для отладки - не использовать alert(). Вместо этого используйте console.log(). Это имеет несколько преимуществ:

  • Он неблокируемый, поэтому код может продолжать выполняться с нормальной синхронизацией. Это уменьшает вероятность ошибок времени, вызванных тем, что код ведет себя очень по-разному в сценариях отладки и выпуска.
  • Он сериализует сложные типы, так что вы можете полностью изучить ваши объекты.
  • Это не закрываемый диалог, а текущий журнал.

Откройте инструменты отладки вашего браузера и взгляните на консоль. Затем в вашем коде (в вашей функции success, где вы в данный момент используете alert()) просто сделайте что-то вроде:

console.log("Success = ", data);

Наблюдайте, что записано на консоли. Для отладки это даст вам точное представление о том, что такое сложный объект / массив data, что это за элементы и т. Д. Оттуда вы можете наблюдать, как получить доступ к любому данному значению в этом объекте / массиве.

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