Просмотрите отправленную форму jQuery Ajax.
$(document).ready(function () { $("#hostingForm").submit(function (e) { e.preventDefault(e); var data = {} data["id"] = $("#id").val(); data["domain"] = $("#domain").val(); data["name"] = $("#name").val(); //... $.ajax({ type: "POST", contentType: "application/json", url: "{{home}}/hosting/update", data: JSON.stringify(data), dataType: 'json', timeout: 600000, success: function (data) { console.log("SUCCESS: ", data); }, error: function (e) { console.log("ERROR: ", e); } }); }); });
Просмотрите серверную часть (Spring MVC), чтобы получить запрос Ajax.
@RestController @RequestMapping("/hosting") public class AdminHostingController { @Autowired HostingBo hostingBo; @RequestMapping(value = "/update", method = RequestMethod.POST) public String updateHosting(@RequestBody HostingForm hostingForm) { if(hostingForm!=null){ hostingBo.update(hostingForm, UpdatedBy.WEB); } return "success"; }
Приведенный выше код Spring MVC работает нормально, обновил базу данных и вернул строку “успех”.
1. Проблема
Как на стороне клиента (отправка формы jQuery Ajax), так и на стороне сервера (Spring MVC) работают нормально, но запускается событие ошибки Ajax?
Смотрите следующий вывод в консоли браузера:
ERROR: Object {readyState: 4, responseText: "success", status: 200, statusText: "OK"}
200 ХОРОШО, но происходит событие ошибки?
2. Решение
В jQuery .ajax()
, если указан параметр Тип данных: 'json'
, сервер должен вернуть допустимую строку в формате JSON, иначе будет выдана ошибка.
” …Данные JSON анализируются строго; любой неверно сформированный JSON отклоняется и выдается ошибка синтаксического анализа…”
Чтобы исправить это , обновите серверную часть, чтобы возвращать строку в формате JSON:
@RestController @RequestMapping("/hosting") public class AdminHostingController { @Autowired HostingBo hostingBo; @RequestMapping(value = "/update", method = RequestMethod.POST) public String updateHosting(@RequestBody HostingForm hostingForm) { if(hostingForm!=null){ hostingBo.update(hostingForm, UpdatedBy.WEB); } //NEED JSON format return "{\"msg\":\"success\"}"; //return "success"; }
Повторите попытку, снова просмотрите консоль браузера, произойдет событие “успех”.
SUCCESS: Object {msg: "success"}
Рекомендации
Оригинал: “https://mkyong.com/jquery/jquery-ajax-request-return-200-ok-but-error-event-is-fired/”