ajax возвращает неопределенный объект в asp.net - PullRequest
0 голосов
/ 04 сентября 2018

здесь метод getter в c #, он получает значения слова, введенного пользователем запросом, и заполняет их в таблице данных, после чего список строк будет заполнен циклом, который будет содержать те значения, которые находятся в последний конвертируется и возвращается в виде строки json:

             public static string  getmeanings(string word)
         {
    string cs = 
            ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

                        List<string> stringArr = new List<string>();

    using (SqlConnection con = new SqlConnection(cs))
    {

        con.Open();
        using (SqlDataAdapter rdr = new SqlDataAdapter("SELECT MEANING FROM WORDS T1 , MEANINGS T2 WHERE WORD LIKE N'" + word + "'AND T1.WORD_ID = T2.WORD_ID", con))
        {
            using (DataTable dt = new DataTable())
            {

                rdr.Fill(dt);
                for(int i =1;i< dt.Rows.Count; i++)
                {
                    stringArr.Add(dt.Rows[0][i].ToString());

                }

            }

            string json1 = JsonConvert.SerializeObject( stringArr);
            return json1;

        }
    }
}

вот код ajax / jquery: при keyup ajax вызовет метод getter и в случае успеха изменит таблицу, содержащую результат возвращаемого объекта json

       $(function () {

        $("#text1").keyup( function () {
            var word = $("#text1").val();
            $.ajax({
                type: "GET",
                url: "toshow.aspx/getmeanings",
                data: { word: word },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {




                $(".tablefill").append("<table><tr><td>meaning id</td><td>meaning</td></tr><tr><td>"+result[0]+"</td></tr></table>");
                    console.log(result);
                }, error: function (err) {
                    alert('ERROR');

                }
            });
        });
    });

после того, как я проверил код, ajax выполняется успешно, без ошибок или сбоев, но результатом всегда является неопределенный объект в консольном журнале

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

result должен быть массивом элементов из вашей базы данных. result.success всегда будет неопределенным, в возвращаемом объекте нет .success.

В другой теме вы захотите позаботиться о проблеме SQL-инъекций. (https://en.wikipedia.org/wiki/SQL_injection)

0 голосов
/ 04 сентября 2018
console.log(result.success);

Вы уверены, что «успех» является членом «результата»? Возможно, попробуйте посмотреть, что делает console.log (результат).

Вы можете запустить из браузера и отлаживать в обратном направлении.

Откройте консоль разработчика (F12 для Chrome), перейдите на вкладку Сеть и затем снова включите Ajax.

Тогда вы, скорее всего, заметите, что сервер ответил с ответом 200, просто без контента.

Теперь вы начинаете и работаете с полученного результата обратно к вашему запросу.

Могу поспорить, что, скорее всего, будет возвращено 0 строк, и ваш цикл не заполнит stringArr. Вы можете получить другую ошибку, как только ваш запрос вернет несколько строк, так как я немного не уверен насчет многомерного массива. Похоже, вы пытаетесь перебрать одинаковое количество столбцов, поскольку у вас есть строки.

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

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