2015-07-23 5 views
5

Ricevo 400 richieste non valide per il metodo AJAX Post. Sto usando Spring Data Rest Services presso Backend. Di seguito è riportato il codice che sto avendo sul front-end per JSJSON Stringify 400 Richiesta non valida su 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(); 
     }); 

Anche se sto serializzando i dati JSON. Sto ancora ricevendo l'errore 400 Bad Request. Questo errore può arrivare se qualche codice si rompe sul backend o il suo problema con la richiesta inviata al server?

JAVA Attuazione

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

} 
+0

Qual è il messaggio di errore della risposta nella console? –

+0

{"causa": null, "messaggio": "Impossibile gestire il riferimento gestito/back 'defaultReference': tipo: valore deserializzatore di tipo org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module $ UriStringDeserializer non li supporta" } –

+0

Il server non può deserializzare i parametri della richiesta. Fondamentalmente la tua richiesta non può essere abbinata a qualcosa che il server già conosce. – alcfeoh

risposta

5

se si dispone di caratteri SPL tuoi dati è necessario per codificare i dati prima di inviare al server. Prova questo

$.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

Vorrei utilizzare encodeURIComponent insted di encodeURI. "encodeURI di per sé non può formare richieste HTTP GET e POST corrette, come per XMLHTTPRequests, perché" & "," + "e" = "non sono codificati, che sono trattati come caratteri speciali nelle richieste GET e POST. encodeURIComponent, tuttavia , codifica questi personaggi. " https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURI –

0

1.Why è necessario inviare i dati di conversione stringa è possibile inviare i dati in quanto è 2.you non deve mettere tipo di contenuto come application/json poiché si è definito come JSON in tipo di dati 3.se qui usi il metodo post, assicurati di gestire lo stesso sul lato server