2015-10-05 3 views
4

Я использую JQuery для отправки запроса AJAX POST. При успехе мне нужно перенаправить пользователя на другую страницу, при отказе я хочу остаться на странице с теми же данными.Spring MVC, jQuery with ajax - получение 415

У меня есть 2 вопроса.

  1. На УСПЕХА, не перенаправляя, он остается на том же URL & дает 415
  2. В случае неудачи, я получаю 415 вместо страницы получать оказаны.

Вот мой код:

var jsonResponse = []; 
//jsonResponse is being constructed from the form data, on submit. 

var req = { 
      "name" : "${name}", 
      "id" : "${id}", 
      "data" : jsonResponse 
    }; 


$.ajax({ 
     url: "url", 
     type: "POST", 
     dataType: 'json', 
     contentType:'application/json', 
     async: false, 
     data: JSON.stringify(req), 
     success: function(result) { 

      url = window.location.href; 
      url = url.replace("processData", "getData"); 
      alert(url); //prints localhost:8000/getData 
      location.href = url; //stays on localhost:8000/processData 
     }, 
     error: function() { 
      alert("--- Failure ---"); 
      // should stay on same page with the previous data, but 
      //returns a 415. 
     } 
    }); 

контроллер для url1

@RequestMapping(value = "processData", method = RequestMethod.POST) 
public String post(Model model, 
        HttpServletRequest httpServletRequest, 
        @RequestBody FormModel model) { 

} 

контроллер для URL2:

@RequestMapping(value = "getData", method = RequestMethod.GET) 
public String get(Model model, HttpServletRequest httpServletRequest) 
{ 
} 

Я прилагаю снимок Сообщение об ошибке я получаю. enter image description here

Что я здесь делаю неправильно?

+0

вы попробуйте удалить CONTENTTYPE: «приложение/JSON» от АЯКС параметра Я, если он работает –

+0

вы получите эту ошибку как ответ от ур вызова AJAX ? или когда ваша функция SUCCESS/ERROR выполнена? – Patel

+0

@Patel, когда выполняется обратный вызов успеха/ошибки, он печатает предупреждения(), а затем отображает исключение 415. – AgentX

ответ

0

Вопрос был с формой. У меня была кнопка «Отправить», которая также отправляла данные после завершения вызова AJAX. Поэтому мне пришлось удалить эту функциональность.

Первоначально:

<input type="Submit" value="Submit" /> 

Сейчас:

<input type="button" value="Submit" /> 

Лучше подход переопределить по умолчанию Добавить функциональность.

$('form').on('submit', function(e) { 
    e.preventDefault(); 

Вот ответ на вопрос, я спросил: Form Processing via AJAX - Avoiding both GET & POST Requests from getting generated

Смежные вопросы