Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Servlet and JSON 
:(
    Опции темы
Christoph
Дата 14.10.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



есть такой сервлет который возращает json

Код

public class GadgetOssEventServlet extends HttpServlet {

    @EJB(name = "OssEventStoreBean")
    private OssEventStoreLocal alarmStoreBean;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        JSONArray alarmEventFacilitytListOfJsonArray = null;
        List<AlarmEventFacility> allAlarms = alarmStoreBean.getAllAlarms();
        try {
            alarmEventFacilitytListOfJsonArray = alarmEventFacilitytListToJsonArray(allAlarms);
        } catch (JSONException ex) {
            Logger.getLogger(GadgetOssEventServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Cache-Control", "no-cache");
        response.getWriter().print(alarmEventFacilitytListOfJsonArray);    
        response.getWriter().flush();
        
    }
    
    private JSONArray alarmEventFacilitytListToJsonArray(List<AlarmEventFacility> list) throws JSONException {
        JSONArray array = new JSONArray();
        for (AlarmEventFacility alarmEventFacility : list) {            
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("eventType", alarmEventFacility.getEventType());
            jsonObject.put("firedAt", new Date(alarmEventFacility.getFiredAt()));
            jsonObject.put("source", alarmEventFacility.getSource());
            jsonObject.put("pinName", alarmEventFacility.getPinName());            
            
            array.put(jsonObject);
        }
        return array;
    }
}


на клиенте крутится js который разбирает json по урлу, вот сам скрипт

Код

function getRequest()
{
    var url = "http://192.168.2.221:8080/OssEventManager-web/gadgetOss.json";
    $.getJSON(url, 
        function(data) {            
            var items = [];

            $.each(data, function(key, val) {
                if (val.eventType == "Alarm")
                    items.push('<li>' + '<font size="2" color="red">' + val.eventType + ' ' + val.firedAt + ' '+ val.source + ' ' + val.pinName + '</font>' + '</li>');   
                else
                    items.push('<li>' + '<font size="2" color="#000080">' + val.eventType + ' ' + val.firedAt + ' '+ val.source + ' ' + val.pinName + '</font>' + '</li>'); 
                    
            });

            $('<div/>', {
                'class': 'my-new-list',
                html: items.join('')
            }).appendTo('body');
        }
        ).error(
        function() {
            console.log("ajax error");
        }
        );
}


и если в урл указать, на локальный файл json то все выводит ок, а если на удаленный сервер, в консоль выводит ошибку
если в  браузер вбить урл, то он предлагает сохранить файл, не могу понять в чем проблема


--------------------
user posted image
PM MAIL ICQ   Вверх
Ares4322
Дата 15.10.2011, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 25.9.2007
Где: Россия, Москва

Репутация: 2
Всего: 3



Можно попробовать ContentType на сервере поменять с  application/json на text/html. На сколько я знаю, семейство application указывает на то, что контент должен открываться сторонней программой.
PM MAIL   Вверх
Christoph
Дата 17.10.2011, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



ничего не получилось


--------------------
user posted image
PM MAIL ICQ   Вверх
Ares4322
Дата 17.10.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 25.9.2007
Где: Россия, Москва

Репутация: 2
Всего: 3



А может проблема именно в суффиксе .json в url?
Пробовали без него?
PM MAIL   Вверх
Christoph
Дата 17.10.2011, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



да без него тоже самое :(


--------------------
user posted image
PM MAIL ICQ   Вверх
Ares4322
Дата 18.10.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 25.9.2007
Где: Россия, Москва

Репутация: 2
Всего: 3



А ошибку какую выводит при обращении по Ip, а не как к localhost ?
PM MAIL   Вверх
Atum
Дата 6.4.2012, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Цитата(Christoph @ 14.10.2011,  18:25)
и если в урл указать, на локальный файл json то все выводит ок, а если на удаленный сервер, в консоль выводит ошибку
если в  браузер вбить урл, то он предлагает сохранить файл, не могу понять в чем проблема

возможная проблема в том что вы пытаетесь с клиента сделать кросс доменный вызов - такого  делать нельзя ( есть ограничение на такие вызовы)

Исключение сделано только для json объектов , но для этого надо указывать : тип jsonp

Так же важно указать !   dataType: 'jsonp' и  ?callback=?',

 пример : 
Код

            var twname = 'ru_lh';
            $.ajax({
                url: 'https://api.twitter.com/1/statuses/user_timeline/'+twname+'.json?callback=?',
                data :{'include_entities':true ,'include_rts':true},
                dataType: 'jsonp',
                success: function(data){
                    try{
                        console.log(data);
                        var el = document.getElementById('twitter');
                        var divtext =new String();
                        for(var i =0;i<data.length; i++){
                            var text =   data[i].text;
                            var username =data[i].user.name; 
                            var screen_name = '@'+data[i].user.screen_name; 
                            var fromid = '<b>'+username+'</b> '+screen_name;   
                            divtext=divtext+ fromid +'<br/>'+text+'<br/><br/>';
                        }
                        el.innerHTML = el.innerHTML+divtext;
                    }catch(e){
                        console.log(e.name);
                    }
                            
                }
            }); 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0969 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.