problem z żądaniem Ajax , oraz z obsługą odpowiedzi serwera

0

Witam wszystkich,
mam problem z żądaniem ajax. Browser ma problem z otrzymanym komunikatem z serwera.
Mianowicie, jeżeli wprowadzam kod poniżej otrzymuje komunikat http 500 ,a gdy zmieniam w kodzie java na wartość zwracaną typu string
to w konsoli pojawia się oczekiwany wynik natomiast mam problem aby go pokazać w html. W innym zaś wypadku dochodzi problem (CORS).

Może ktoś pomoże?

Kod api java:

public class Controller {

    @Autowired
    private CurrencyConverterService currencyConverterService;
    @Autowired
    private OperationLogger operationLogger;
    @Autowired
    private OperationReader operationReader;

    @CrossOrigin(origins = "http://localhost:3000")

    @RequestMapping("/nameOfOperation")
    public JSONObject recycleTheRequest(@RequestParam(value = "nameOfOperation") String nameOfOperation, @RequestParam(value = "volume") String volume) throws JSONException {
        String result = currencyConverterService.selectTheApplication(nameOfOperation, volume);

        OperationData operationData = new OperationData();
        operationData.setNameOfOperation(nameOfOperation);
        operationData.setAmount(volume);
        operationData.setResult(result);
        operationLogger.log(operationData);
        JSONObject obj = new JSONObject();
        obj.put("wynik",result);
        return obj;
    }

    @RequestMapping("/nameOfOperationData")

    public List<OperationData> getOperationList() {
        return operationReader.getOperationList();
    }

}

Kod js

$('#operation').on('submit', function (event) {
  event.preventDefault();
  var details= $('#operation').serialize();
  var url = 'http://localhost:1111/nameOfOperation?';
$.ajax({
           type: 'GET',
           url:url+details,
           timeout :3000,
           dataType: 'jsonp',
           beforeSend:function () {
             $('#result').html(" proszę czekać");
          },
           success: function (data) {
             $('#result').html(data.wynik);
          }
});
});
0

Czemu dataType to jsonp?

0

tak zostało po moich ostatnich próbach, w każdym innym wypadku wywalało mi CORS. Drugim dziwnym nie do zrozumienia dla mnie zjawiskiem jest , że jeżeli metoda "recycleTheReques" Java zwraca mi string , a dataType jest jsonp to odpowiedz z serwera przychodzi dobra i zostaje wyświetlona w konsoli, lecz wtedy powstaje problem z uaktualnieniem DOM o te dane z servera. Trochę się zakopałem w tym. Ale tak to jest jak człowiek chce wszystko naraz.

0

Nie znam się na Springu, ale na mój gust to:

  1. Dodaj do metody @ResponseBody.
  2. Wywal dataType - to Ci nie jest potrzebne, bo nie przesyłasz danych.
0

[Error] Origin http://127.0.0.1:3000 is not allowed by Access-Control-Allow-Origin.
[Error] XMLHttpRequest cannot load http://localhost:1111/nameOfOperation?nameOfOperation=PLNUSD&volume=2 due to access control checks.
[Error] Failed to load resource: Origin http://127.0.0.1:3000 is not allowed by Access-Control-Allow-Origin. (nameOfOperation, line 0)

0

Zmień @CrossOrigin(origins = "http://localhost:3000") na @CrossOrigin. Jeżeli to zadziała, to spróbuj @CrossOrigin(origins = "http://127.0.0.1:3000")

0

Failed to load resource: the server responded with a status of 500 ()

0

myślę że jednak problem jest js nie w javie

1

No dobra, ale dlaczego dostajesz tą 500? Przecież musisz mieć jakieś logi po stronie serwera.. Problem masz teraz z CORS, więc to java.

0

Racja, zmieniłem trochę kod javy , a dokładniej typ zwracany metody na string i zmodyfikowałem js i wszystko gra.
Dzięki za pomoc tak późną porą

Pozdrawiam

1

Na przyszłość możesz spróbować takie podejście:
Szukasz minimalistycznego przykładu w internecie. Przekopiowujesz go do siebie. Usuwasz wszystko co jest zbędne. Przykład działa? Super. Teraz powoli dostosowujesz go do swoich potrzeb. Powoli dodajesz kodzik i patrzysz czy dalej działa. Jak się zepsuje to rozkminiasz dlaczego. W ten sposób całkiem szybko znajdziesz błąd. Alternatywą dla tego podejścia jest wywalenie z obecnego kodu wszystkiego, co nie jest konieczne do tego, żeby uzyskać daną rzecz. Czyli w Twoim przypadku poprawne wyświetlenie odpowiedzi z serwera. To pozwoli Ci możliwie szybko znaleźć przyczynę, bo minimalizujesz ilość rzeczy, które mogą mieć potencjalnie wpływ na błędny wynik działania programu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1