Проблема с $ .each в jquery - PullRequest
       0

Проблема с $ .each в jquery

1 голос
/ 08 декабря 2010

Я пытаюсь заполнить форму поиска jqGrid, используя элемент SELECT. В colModel для интересующей колонки у меня есть

searchoptions: {
    dataUrl: '<%: Url.Content("~/Contact/GetCustomers") %>',
    buildSelect: function (response) {
        var theSelect = "<select>";
        $.each(response, function (i, data) {
            theSelect += '<option value="' + data.Value + '">' + data.Text + '</option';
        });
        theSelect += "</select>";
    },
    sopt: ['eq', 'ne']
}

удаленный метод GetCustomers возвращает результат json, отформатированный как

[{"Selected":false,"Text":"David Gilmour","Value":"10"},
 {"Selected":false,"Text":"Eric Clapton","Value":"26961"},
 {"Selected":false,"Text":"Joan Baetz","Value":"26972"}]

но с кодом, который я использовал для каждой функции, я получаю следующую ошибку

alt text

Ответы [ 5 ]

1 голос
/ 08 декабря 2010

Посмотрите на закрытый ответ . Мне кажется, вам следует немного изменить код:

buildSelect: function(data) {
    var response = jQuery.parseJSON(data.responseText);
    var s = '<select>';
    if (response && response.length) {
        for (var i = 0, l=response.length; i<l ; i++) {
            var ri = response[i];
            s += '<option value="' + ri.Value +
                 (ri.Selected ? '" selected="selected">': '">') +
                 ri.Text + '</option>';
        }
   }
   return s + "</select>";
}
1 голос
/ 08 декабря 2010

Поскольку (согласно вашему комментарию выше) вы получаете объект XMLHttpRequest, вам необходимо проанализировать его текст ответа.

var parsed = $.parseJSON( response.responseText );

$.each( parsed, function(...

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

1 голос
/ 08 декабря 2010

ответ - это просто строка, которую нужно проанализировать, используя что-то вроде json2.js

var data = JSON.parse(response);
0 голосов
/ 08 декабря 2010

Я бы попробовал использовать $(this) внутри каждой функции. Хотя это выглядит правильно, что-то может быть подозрительным с результатом. В качестве альтернативы вы можете использовать for (var d in data) (я думаю) для перебора JSON.

0 голосов
/ 08 декабря 2010

Вы анализируете этот объект JSON, чтобы вы могли прочитать его как фактический объект JS?

Поскольку вы возвращаете массив объектов JSON, вам, возможно, придется анализировать каждый объект отдельно во время итерации.

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