Возвращение JSON с ASP.NET и $ .getJSON - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть страница, которая подключается к базе данных Northwind, чтобы получить список категорий ...

protected void Page_Load(object sender, EventArgs e)
    {
        var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString);
        var cmd = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories ORDER BY CategoryName", cnn);
        using (cnn)
        {
            cnn.Open();
            var dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            if (dr.HasRows)
            {
                var sb = new StringBuilder();
                var sw = new StringWriter(sb);

                using (JsonWriter jw = new JsonTextWriter(sw))
                {
                    jw.Formatting = Formatting.Indented;

                    jw.WriteStartArray();
                    while (dr.Read())
                    {
                        jw.WriteStartObject();
                        jw.WritePropertyName("CategoryID");
                        jw.WriteValue(dr.GetInt32(0));
                        jw.WritePropertyName("CategoryName");
                        jw.WriteValue(dr.GetString(1));
                        jw.WriteEndObject();
                    }
                    jw.WriteEndArray();
                    jw.Flush();
                    Response.Write(sb);
                }
            }
        }
    }

Это работает так, как ожидалось. На моей странице вызова у меня есть выпадающий список, и я пытаюсь использовать jQuery для его заполнения. Возможно я делаю это неправильно. Я предполагаю, что он берет весь текст из файла .aspx, который включает в себя строки и и делает его недействительным? Если да, то как правильно это сделать или что я делаю неправильно?

$.getJSON('GetCategories.aspx', function (data) {
        alert('success!');
        $.each(data, function (key, val) {
            $('#ddlCategories').append('<option></option>').val(key).html(val);
        });
    });

Оповещение никогда не происходит, поэтому оно не позволяет получить файл. Имя файла правильное, так как Chrome Inspector не выдает консольных ошибок.

1 Ответ

0 голосов
/ 21 февраля 2012

Вам следует взглянуть на HttpHandlers, так как они имеют гораздо меньшие накладные расходы и могут быть ограничены только желаемым выходом.

Я использую HttpHandler в качестве примера в другом ответе здесь Доступ к изображению из App_dataпапка

...