скрипт с ajax/prototype не работает в mozilla
От: khazzar Россия  
Дата: 03.12.09 08:55
Оценка:
Есть код: тестовый скрипт, очень стандартный.
в браузере (версия прототипа 1.6.0.2):
<html>
<head>
<script charset="UTF-8" src="files/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
    function checkPrevios()
    {
        var url = 'http://localhost:8080/fx/dmsappealcitizenssearchservlet?port=FIND_PREV&uuids=uuid1,uuid2';
        var request = new Ajax.Request(url, {
          method: 'post',
          onSuccess: function(transport) {
              alert(transport.responseText);
              alert(transport.status);
              alert(transport.readyState);
          }
        });
        return false;
    }
</script>
</head>
<body>
<a href="#" onclick="checkPrevios();">click me!</a>
<form name="mane">
    <input type="checkbox" name="chb" value="ddd"/>ddd
</form>
</body>
</html>


на сервер-сайде (java servlet)
 private void findPreviosAppeals(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException
    {
        String s_uuids = req.getParameter("uuids");
        String[] uuids = s_uuids.split(",");

        List<DMSAppeal> appeals = DMSAppealHibernaeHandler.listDMSAppealByCitizen(uuids);

        Set<String> set_uuids = new HashSet<String>();
        set_uuids.addAll(Arrays.asList(uuids));

        JSONObject result = new JSONObject();

        try
        {
            result.put("uuid1", "Обращение 1 ( Иванов Иван Иванович )");
            result.put("uuid2", "Обращение 2 ( Иванов Иван Иванович )");
        } catch (JSONException e)
        {
            throw new ServletException(e);
        }

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Cache-Control", "no-cache");
        response.setStatus(200);
        response.getWriter().write(result.toString());
    }


Что получаю в результате:
В IE 7 все работает как надо, корректно получаю текст, статус 200 и readyState 4
В фаерфоксе 3.5.5 текст пустой (""), статус 0 и readyState 4

На мозиле установлен фаербаг, он показывает, что запрос на сервер корректно уходит и корректно приходит. размер сообщения соответствует размеру передаваемого текста.
поведение такое же при изменениях на сервер-сайде (другой контент-тайп, без явно установленного response.status, с флашем респонса сразу после печати результатов)
видимо, в ИЕ оно работает, потому что там используется не ActiveX, а не XMLHttpRequest.
пытался гуглить — ничего подходящего не нашлось. были фразы про работу из разных доменов, еще что-то... но вроде это все не то.

В общем, хотелось бы советов уважаемых экспертов на тему "куда рыть".
prototype javascript ajax
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.