Wysyłanie jakiejkolwiek zmiennej do JS (AJAX)

0

Witam, mam pewien problem otóż, po prostu chciałbym wiedzieć jak wysłać jakąkolwiek zmienną do JS przy pomocy AJAX. I jeszcze chciałbym żeby dane ze zmiennej były bezpieczne. Bo ogólnie mam coś takiego:

$data['level'] = $row['level'];

echo json_encode($data);

i coś takiego:

$(document).ready(function () {
  level = document.getElementById("level");
  $.ajax({
    method: "POST",
    url: "game.inc.php",
    data: { level: level.value },
    success: function (data) {
      if (data == 1) {
        alert("asdasd");
        firstLevel();
      } else if (data == 2) {
        secondLevel();
      }
    },
    error: function (xhr, status, error) {
      alert(xhr + " " + status + " " + error);
    },
  });
});

Wywala mi taki błąd: ERR_ABORTED 404 (Not Found)
Bo to ma działać bez formularza po prostu ma wziąć zmienną, która przypisuje sobie do levelu z bazy danej a on ma wyświetlić i wykonać pewne akcje po stronie klienta.

1

Nie znam się na jQuery, ale komunikat błędu mówi, że najpewniej adres wywołania game.inc.php jest niepoprawny.
Spróbuj użyć pełnego adresu: protokół://domena/ścieżka/plik

0

Tak to prawda pierwszym problemem był błąd ścieżki już naprawiłem

 url: "includes/game.inc.php",

Tylko wcześniej dawało mi error z AJAXa a po naprawie ścieżki nie wyświetla błędu więc chyba powinno być success? (Niestety tak nie jest)
Dodam jeszcze to:

screenshot-20210329144225.png

0

Dobra doszedłem już kod wygląda następująco:

$(document).ready(function () {
  level = document.getElementById("level");
  $.ajax({
    method: "POST",
    url: "includes/game.inc.php",
    data: { level: level.value },
    success: function (data) {
      alert(data);
    },
    error: function (xhr, status, error) {
      alert(xhr + " " + status + " " + error);
    },
  });
});

$data['level'] = $row['level'];

echo json_encode($data);

Tylko teraz problem jest taki, że {"level":"2"} ten cały ciąg traktuje na pojedyncze znaki i żeby skorzystać z tej 2 to musze dać data[10] a co gdy będzie kilka numerów np. level 20 to musze brać 10 i 11 więc jak mam wyciągnąć po prostu drugi element.

1

@likeu.:

success: function (data) {
      alert(JSON.parse(data).level);
    },
2

Jak pisałam, nie znam się na jQuery.
Wysyłając zwyczajnym xhttp.send('parametry...');
zapisujesz 'par1=wartość' albo 'par1=wartość&par2=wartość'

a od strony serwera czytasz po prostu z tablicy:
$par1 = $_POST["par1"];

1

https://api.jquery.com/Jquery.ajax/ właściwość dataType.

Chociaż serwer powinien zwracać application/json, pewnie dlatego jQuery nie robi tego automatycznie.

0

Zamykam, rozwiązanie:

JSON.parse(data).level

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