xhrPost работает по-разному с Firefox и IE - PullRequest
0 голосов
/ 31 марта 2011

У меня проблема со Struts 1.3 и Dojo. Я использую xhrPost для вызова ajax, например:

dojo.xhrPost( {
    url: contesto+"/my_struts_action.do",
    content: {valore: valore, phase: indexPhase, field: indexResult, property: tipoCampo}, 
    handleAs: "text",
    sync: true,
    timeout: 50000,

    // The LOAD function will be called on a successful response.
    load: function(response, ioArgs) { // 
    return response; // 
  },

  // The ERROR function will be called in an error case.
  error: function(response, ioArgs) { // 
    console.error("HTTP status code: ", ioArgs.xhr.status); // 
    return response; // 
    }
  });

это метод действия:

public ActionForward saveResultValue(ActionMapping actionMapping,
        ActionForm actionForm, HttpServletRequest request,
        HttpServletResponse response) throws ModuleCompileException {

    String value = request.getParameter("valore");
              ...
}

Я использую request.getParameter ("valore") и у меня другой результат в FF или IE (Firefox или Internet Explorer). В FF я получаю правильную строку со специальными символами, но в IE я получаю неправильную строку.

Например: Я отправляю "unità" из метода xhrPost. с FF метод struts получает правильную строку, с IE получает "unitÃ".

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Я решил свою проблему.Я добавил свойство headers при вызове xhrPost.

dojo.xhrPost( {
    url: contesto+"/distribution/update_result_value.do",
    headers: { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" },
    content: {valore: valore, phase: indexPhase, field: indexResult, property: tipoCampo}, 
    handleAs: "text",
    sync: true,
    timeout: 50000,

    // The LOAD function will be called on a successful response.
    load: function(response, ioArgs) { // 
    return response; // 
  },

  // The ERROR function will be called in an error case.
  error: function(response, ioArgs) { // 
    console.error("HTTP status code: ", ioArgs.xhr.status); // 
    return response; // 
    }
  });

Возможно, IE использует кодировку страницы (в моем случае iso) в вызове xhrPost.Свойство заголовков, определяющее, какая кодировка должна использовать вызов.

Спасибо!

0 голосов
/ 01 апреля 2011

Я сомневаюсь, что это из-за различий браузера в xhrPost. Скорее всего, это будут заголовки кодировки с сервера или объявление кодировки в начале вашего HTML-заголовка. Браузеры всегда должны отвечать на запросы в кодировке, в которой была получена страница.

Проверьте заголовок сервера (при условии, что utf -8):

Content-Type: text/html; charset=utf-8

и заголовок HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Смотрите здесь: http://bugs.dojotoolkit.org/ticket/6037

Убедитесь, что оба браузера считают, что страница находится в одной и той же кодировке, используя view-> encoding в верхнем меню и просматривая то, что в данный момент выбрано. И, как рекомендуется в указанном билете, используйте firebug или аналогичный инструмент для проверки заголовков с вашего сервера.

...