Массив объектов через JSON и jQuery для Selectbox - PullRequest
0 голосов
/ 19 мая 2011

У меня проблемы с переносом набора данных (массива объектов) из сервлета в jsp / jquery.

Это набор данных, отправленный сервлетом (Json):

[
    {aktion:"ac1", id:"26"},
    {aktion:"ac2", id:"1"},
    {aktion:"ac3", id:"16"},
    {aktion:"ac4", id:"2"}
] 

JSP:

function getSelectContent($selectID) {
alert('test');
 $.ajax({
        url:'ShowOverviewDOC',
        type:'GET',
        data: 'q=getAktionenAsDropdown',
        dataType: 'json',
        error: function() {
            alert('Error loading json data!');
        },

    success: function(json){
        var output = '';
        for (p in json) {

    $('#'+$selectID).append($('<option>').text(json[p].aktion).attr('value', json[p].aktion));

}
                    }});

};

Если я пытаюсь запустить это, появляется сообщение об ошибке («Ошибка загрузки данных JSON»). У кого-нибудь есть идея, где может быть ошибка? Спасибо!

Ответы [ 3 ]

0 голосов
/ 19 мая 2011

Способ установки параметра данных выглядит немного подозрительно (обратите внимание на кодировку JSON в моем примере ниже). Вот как это будет выглядеть при вызове .Net asmx

$.ajax({
  url: "/_layouts/DashboardService.asmx/MinimizeWidgetState",
  data: "{'widgetType':'" + widgetType + "', 'isMinimized':'" + collapsed + "'}"
});

Также возвращаемые данные по умолчанию помещаются в свойство .d возвращаемой переменной. Вы можете изменить это поведение по умолчанию, добавив сценарий установки ajax.

//Global AJAX Setup, sets default properties for ajax calls. Allows browsers to make use of native JSON parsing (if present)
//and resolves issues with certain ASP.NET AJAX services pulling data from the ".d" attribute.
$.ajaxSetup({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: "{}",
    success: function(msg) {
        if (this.console && typeof console.log != "undefined")
            console.log(msg);
    },
    dataFilter: function(data) {
        var msg;

        //If there's native JSON parsing then use it.
        if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function')
            msg = JSON.parse(data);
        else
            msg = eval('(' + data + ')');

        //If the data is stuck in the "."d" property then go find it.
        if (msg.hasOwnProperty('d'))
            return msg.d;
        else
            return msg;
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        handleAjaxError(XMLHttpRequest, textStatus, errorThrown);
    }
});
0 голосов
/ 19 мая 2011

Чтобы точно увидеть, что происходит, проверьте информацию textStatus и errorThrown, предоставленную обратным вызовом ошибки. Это может помочь сузить его.

http://api.jquery.com/jQuery.ajax/

0 голосов
/ 19 мая 2011

Если функция error запущена, то ваш сервер возвращает ответ об ошибке (код ответа HTTP> = 400).

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