Ajax post метод, возвращает 400 ошибка при использовании application / json в качестве contentType, 500 при использовании application / x-www-form-urlencoded - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу сделать Ajax-вызов через jQuery, у меня есть данные публикации в виде объекта в этом формате.

var data = {
pointsPriceChangeInfo: {oldTripTotal: "123", oldTripGrandTotal: "1231"}
prices: "[{"price":{"amount":"$2123","currencyCode":"USD"},"type":"PER_TRAVELER"}]"
productInternalName: "Travel Protection"
responseId: "test"
tripId: "***-99ff-417e-***-****"
}

$.ajax({
  url: URL,
  method: "POST",
  data: JSON.stringify(data),
  contentType: "application/json"
})

Это дает мне ошибку 400:

Request URL: https://***/Checkout/addGlobalInsuranceV2
Request Method: POST
Status Code: 400 
Remote Address: *********
Referrer Policy: no-referrer-when-downgrade

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 1649
Content-Type: application/json; charset=UTF-8

КогдаЯ изменяю свой вызов ajax следующим образом:

 $.ajax({
     url: URL,
     method: "POST",
     data: data
 })

Запрос выдает ошибку 500:

Request URL: https://***/Checkout/addGlobalInsuranceV2
Request Method: POST
Status Code: 500 
Remote Address: ***.*.*.*
Referrer Policy: no-referrer-when-downgrade

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 1687
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Это сигнал метода Javaaauture:

public Map<String, Object> addGlobalInsuranceV2(
            @RequestParam(PRODUCT_INTERNAL_NAME_KEY) String productInternalName,
            @RequestParam(RESPONSE_ID_KEY) String responseId,
            @RequestParam(TRIP_ID_KEY) String tripId,
            @RequestParam(PRICES_KEY) String prices,
            HttpServletRequest httpRequest, @ModelAttribute(value = POINTS_INFO) PointsPriceChangeInfo pointsPriceChangeInfo)

Можеткто-то скажет мне, почему для 400 установлено значение application / json, а для другого 500. И какой из них мне следует использовать?

Спасибо,

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