2017-02-15 5 views
0

Ich habe im Frühjahr einen POST-Ruhe-Controller erstellt. Ich möchte diesen Controller von einem Ajax-Anruf anrufen.400 Ungültige Anfrage oder 415 Nicht unterstützter Medientyp in Ajax nach dem Anruf

@RequestMapping(value = "/getAdzAcrVehicle") 
@RestController("AdzoneAcrVehicle") 
public class AdzoneAcrVehicleController { 

private static Logger LOG = Logger.getLogger(AdzoneAcrVehicleController.class.getName()); 

private String jsonresponse; 
@Autowired 
@Qualifier(value="AzoneAcrVehicleService") 
private AzoneAcrVehicle azoneAcrVehicle; 
@RequestMapping(method = RequestMethod.POST) 
public String getAll(@RequestBody ObjectNode json) { 
     System.out.println(json); 
    return json.get("vehicle").asText(); 
} 
} 

Ich versuche, unter Verwendung aller unten angegebene Lösungen, die Rest-Controller zu nennen, aber ich bin 400 Bad Anfrage oder 415 Nicht unterstützten Medientyp Fehler.

1)

var parameter = JSON.stringify({vehicle:datas[3]}); 
       $.ajax({ 
         url: appName+'/getAdzAcrVehicle', 
         type: 'post', 
         dataType: 'json', 
         success: function (data) { 
          console.log(data); 
         }, 
         data: parameter 
        }); 

2)

    $.ajax({ 
        type: 'post', 
        url: appName+'/getAdzAcrVehicle', 
        data: JSON.stringify(parameter), 
        contentType: "application/json; charset=utf-8", 
        traditional: true, 
        success: function (data) { 
        console.log(data); 
        } 
       }); 
+0

Problem scheint in "Rückgabetyp" zu sein, da es Klartext ist. Versuchen Sie, das Format {key: value} 'im JSON-Format zurückzugeben. – Hearty

Antwort

0

Sie haben vergessen, die Response in Ihrer Methode

@RequestMapping(method = RequestMethod.POST) 
@ResponseBody 
public String getAll(@RequestBody ObjectNode json) { 
     System.out.println(json); 
    return json.get("vehicle").asText(); 
} 
+0

Ich habe auch @ResponseBody hinzugefügt. Aber ich bekomme keine Antwort in meiner Browser-Konsole .... –

1

Da es @RestController ist dann @ResponseBody nicht erforderlich. https://stackoverflow.com/a/25242458/6677551

Sie können den Inhaltstyp angeben.

var parameter = JSON.stringify({vehicle:datas[3]}); 
    $.ajax({ 
      url: appName+'/getAdzAcrVehicle', 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json' 
      success: function (data) { 
       console.log(data); 
      }, 
      data: parameter 
     }); 
+0

Ich habe meinen Ajax-Aufruf zu Ihrem Code aktualisiert, jetzt wird mein Controller aufgerufen und es gibt Wert zurück. aber, ich bekomme keine Antwort in meiner Browser-Konsole. Was ist das neue Problem jetzt? Warum dieser Erfolg: Funktion (Daten) { console.log (Daten); } wird nicht ausgeführt ??? –

+0

ändern Rückgabetyp von ** String **, wie erwartet json Ergebnis. – shabinjo

Verwandte Themen