JQuery получить JSON и возвращается первым в качестве метки? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть Google до смерти, у многих людей такая же проблема, но общее исправление не работает для меня ..

Мои данные, которые возвращаются с моего домашнего сервера:

{
  "errors": 1.15,
  "allErrors": null,
  "threads": 10.83,
  "sale": 131.36,
  "delivery": 1.68,
  "failed": 60,
  "webErrors": 432,
  "webErrorsByMin": 0
}

Я пытался:

            $.ajax({
                type: "GET",
                url: "http://srv3.localhost:8080/monitor/Totals?callback=?",
                dataType: "jsonp",
                success: function(data) {
                    var items = [];
                    $.each(data, function(key, val) {
                        items.push('<li id="' + key + '">' + val + '</li>');
                    }); 
                    }
            }, "jsonp");

Я также пытался:

$.getJSON("http://srv3.localhost:8080/monitor/Totals?callback=?",
                    function(data){

                        var result = eval( "(" + data + ")" );
                });

Он пытается установить первый ключ в качестве метки ..

Ошибка Firefox:

invalid label
"address": 1.8, 

Я пробовал так много разных вещей, но всегда он возвращается как ярлык. После моих поисков в Google, обычное исправление заключалось в инкапсуляции возврата, используя:

var result = eval( "(" + data + ")" );

Но в моем случае это не работает ..: (

Кто-нибудь знает, почему это не работает для меня? Использование jquery 1.4.2

Спасибо!

Ответы [ 4 ]

1 голос
/ 04 марта 2012

Для стороны сервлета Tomcat вам нужен фильтр для преобразования ответа.Как запрограммировать фильтр, вы можете найти в примерах Tomcat.Хорошая отправная точка:

http://www.java2s.com/Tutorial/Java/0400__Servlet/Filterthatusesaresponsewrappertoconvertalloutputtouppercase.htm

0 голосов
/ 05 декабря 2011

ты пробовал это?

for (var key in data){
  items.push('<li id="' + key + '">' + data[key] + '</li>');
}
0 голосов
/ 05 декабря 2011

Вы возвращаете JSON со своего сервера и предполагаете, что выполняете междоменный вызов, и поэтому вам нужен запрос JSONP.

Вам нужно заключить данные JSON в функцию, которую вы передали через параметрcallback.

Ваш код JavaScript выглядит неплохо, но код вашего сервера должен выполнять что-то вроде этого:

HandleRequest()
BEGIN
   callbackFunction = REQUEST.PARAMETER["callback"]
   RESPONSE.WRITE callbackFunction + "(" + jsonSerializedData + ")"
END

PS: Вам не нужносделать запрос JSONP, если вы запрашиваете на том же сервере.

0 голосов
/ 05 декабря 2011

Я считаю, что результаты запутываются до data.d.

Вы можете убедиться в этом, взглянув на возвращение JSON с помощью Firebug и сделав чистый захват запроса и ответа.

...