Ajax метод контроллера Spring MVC - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть веб-приложение, которое использует jQuery для отправки AJAX-запросов на сервер.Один из методов (в контроллере) возвращает объект ModelAndView, который может быть html-кодом или объектом JSON - зависит от существующих ошибок.Входными параметрами метода thid является массив JSON (форма).Определение метода:

@RequestMapping(value = "/generate", method = RequestMethod.POST, headers = BaseController.AJAX_HEADER)
public ModelAndView generate(@RequestBody HandlingReportForm form, HttpServletResponse response) {...}

Метод jQuery выглядит следующим образом:

jQuery.ajax({
    'type': 'POST',
    'url': url,
    'contentType': 'application/json',
    'data': JSON.stringify(data),
    'dataType': 'json',
    'success': callback,
    error : function(jqXHR, textStatus, errorThrown) {
        alert(errorThrown);
    },
    complete : function(jqXHR, textStatus) {
        alert(textStatus);
    }
});

Нет проблем, когда сервер возвращает массив JSON.Проблема возникает, когда ответ сервера HTML.Я получаю исключение "parseerror".Я предполагаю, что jQuery пытается проанализировать строку ответа в JSON.Я прав?Как я могу отключить этот автоматический анализ?Есть ли другой способ реализовать такой универсальный метод?

Спасибо Спасибо

1 Ответ

1 голос
/ 13 ноября 2011

dataType упоминается как json, поэтому JQuery будет пытаться интерпретировать ответ как объект json.

JQuery Ajax документация -

dataType- "json": оценивает ответ как JSON и возвращает объект JavaScript.В jQuery 1.4 данные JSON анализируются строго;любой искаженный JSON отклоняется и выдается ошибка разбора.(См. Json.org для получения дополнительной информации о правильном форматировании JSON.)

Лучше возвращать один формат ответа.

Вы также можете исключить аргумент dataType.
Если ничего не указано, jQuery попытается вывести его на основе MIME-типа ответа (XML-MIME-тип даст XML, в 1.4 JSON выдаст объект JavaScript, в 1.4 скрипт выполнит скрипт и все остальноебудет возвращено в виде строки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...