Как я могу отформатировать данные AJAX для Списка выбора в WebForms? - PullRequest
0 голосов
/ 27 октября 2011

Я заполняю SelectList с данными, которые возвращаются из вызова AJAX. Тем не менее, данные отображаются в виде одного элемента с действительно длинным именем вместо нескольких десятков элементов с короткими именами. Я получаю «ABC DEF GHI JKL MNO» вместо «ABC», «DEF», «GHI» и т. Д. Итак, мой SelectList просто получает один элемент с длинным именем.

Если я просматриваю свои возвращенные данные в отладчике, я вижу короткие значения, появляющиеся в отдельных строках по желанию.

Я пытался использовать «html» вместо «json» для возвращаемого типа, но это не имело никакого эффекта.

Вот мой код на стороне сервера:

private void GetItems(HttpContext context, int myID) 
{
    DataTable datatable = GetMyItems(myID);

    foreach (DataRow myRow in datatable.Rows)
    {
        Response.Write(myRow["ColumnName"].ToString() + Environment.NewLine);
    }
    Response.End();
}

И JavaScript ...

$.ajax({
    url: "../myAjaxPage.aspx?myID=" + myID,
    type: 'POST',
    datatype: 'json',

    success: function (data) {
        $("<option>").attr("value", data).text(data).appendTo("#<%= mySelectList.ClientID %>");
    }
});

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Вы не возвращаете JSON, вы просто возвращаете строку. Но это нормально. Просто разбейте строку и итерируйте полученный массив.

success: function (data) {
    $.each (data.split("\n"), function () {
        $("<option>").attr("value", this).text(this).appendTo("#<%= mySelectList.ClientID %>");
    });
});
1 голос
/ 27 октября 2011

Можете ли вы вернуть объект в виде массива вместо строки?Я думаю, что в Ajax игнорируются символы новой строки.Вы можете сделать $.each(data), если они хранятся в объекте массива, что я и пытаюсь сделать

...