2015-07-23 25 views
5

Otrzymuję 400 Bad Request dla metody Post AJAX. Korzystam z usług Spring Data Rest Services w Backend. Poniżej znajduje się kod, który mam na przednim końcu dla JSJSON Stringify 400 Bad Request na AJAX POST

var url = "/udb/data/SecurityRoleGroup", 
     groupData = {id:"",name:"",accesslevel:"",roles:[]}; 
     groupData.id = groupId.val(); 
     groupData.name = groupName.val(); 
     groupData.accesslevel = groupDescription.val(); 
     groupData.roles = multiselect_to.val(); 

     $.ajax(url, { type: 'POST', 
      dataType: 'json', 
      headers: { 
       'X-CSRF-Token': _csrfGroup.val(), 
       'Content-Type' : 'application/json' 
      }, 
      data: JSON.stringify(groupData), 
      contentType: 'application/json', 
     }) 
     .done(function(results) { 
      showMessage.html("Group details are saved successfully."); 
      showMessage.removeClass().addClass("alert alert-success").show(); 
     }) 
     .fail(function(xhr, textStatus, errorThrown){ 
      showMessage.html("Error : Rolegroup AJAX request failed! Please try again."); 
      showMessage.removeClass().addClass("alert alert-danger").show(); 
     }); 

Chociaż serializuję dane JSON. Nadal otrzymuję błąd 400 nieprawidłowych żądań. Czy ten błąd może się pojawić, jeśli jakiś kod łamie się w backendach lub problem z żądaniem wysłanym na serwer?

JAVA Realizacja

@RepositoryRestResource(collectionResourceRel = "SecurityRoleGroup", path = "SecurityRoleGroup") 
public interface SecurityRoleGroupRepository extends PagingAndSortingRepository<SecurityRoleGroup, Long> { 

} 
+0

Co to jest komunikat o błędzie odpowiedzi w konsoli? –

+0

{"przyczyna": null, "message": "Nie można obsłużyć odwołania zarządzanego/wstecznego" defaultReference ': type: wartość deserializer typu org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module $ UriStringDeserializer nie obsługuje ich " } –

+0

Twój serwer nie może zserializować parametrów żądania. Zasadniczo twoja prośba nie może być dopasowana do niczego, o czym wie już serwer. – alcfeoh

Odpowiedz

5

jeśli znaki spl w swoje dane potrzebne do kodowania danych przed wysłaniem do serwera. Spróbuj tego

$.ajax(url, { type: 'POST', 
       dataType: 'json', 
       headers: { 
        'X-CSRF-Token': _csrfGroup.val(), 
        'Content-Type' : 'application/json' 
       }, 
       data: encodeURI(JSON.stringify(groupData)), 
       contentType: 'application/json', 
      }) 
+0

Użyłbym encodeURIComponent insted z encodeURI. "encodeURI sam w sobie nie może tworzyć prawidłowych żądań HTTP GET i POST, takich jak dla XMLHTTPRequests, ponieważ" & "," + "i" = "nie są kodowane, które są traktowane jako znaki specjalne w żądaniach GET i POST. encodeURIComponent, jednak , koduje te znaki. " https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURI –

0

1.Why trzeba wysłać dane konwersji ciąg wysyłał dane, jak to jest 2.you nie trzeba umieścić typ zawartości jako application/json ponieważ zdefiniowane jako typ danych w formacie JSON 3.Jeśli używasz metody posta, upewnij się, że postępujesz tak samo po stronie serwera:

Powiązane problemy