Есть код: тестовый скрипт, очень стандартный.
в браузере (версия прототипа 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.
пытался гуглить — ничего подходящего не нашлось. были фразы про работу из разных доменов, еще что-то... но вроде это все не то.
В общем, хотелось бы советов уважаемых экспертов на тему "куда рыть".