Próbuję wysłać AJAX Post do pliku PHP, jednak plik PHP wysyła zawiadomienie o "niezdefiniowanym indeksie", a plik PHP nigdy nie wydaje się otrzymywać wartości, którą próbuję wysłać go. Szukałem odpowiedzi na to, dlaczego to nie działa poprawnie, więc mam nadzieję, że ktoś może dać mi pewien wgląd.

Moja funkcja JavaScript otrzymuje wartość z HTML i otrzymuje prawidłową wartość. (To "1" w tym przypadku)

    function deleteMediaFromDatabase(val)
    {

  $.ajax({ url: 'deleteMediaFromDatabase.php',
         data: {vals : val},
         type: 'post',
         success: function(output) {
                      alert(output);
                  },
          error: function(request, status, error){
            alert("Error: Could not delete");
          }
  });
}

Oto część mojego pliku PHP, który powinien otrzymać post:

    <?php

 ini_set("display_errors", "On");
 error_reporting(E_ALL);

    $val = $_POST["vals"];

    // create connection
    $con = mysqli_connect(<stuff you don't care about>);

  error_log($val . ' is the value', 3, "./error.log");

?>

Jestem jednak otrzymuję ten komunikat o błędzie z PHP:

UWAGA: Wskaźnik niezdefiniowany: Vals in /xxx/xxx/htdocs/adminpanel/deletemediaFromdatabase.php on Line 9

A mój javascript zawsze wyprowadza alert w błędzie: "Błąd: nie mógł usunąć"

Wiem, że to pytanie zostało poproszone i odpowiedziałeś wiele razy, jednak jeśli jednak pomijam coś małego, mój kod, dla mnie, wygląda poprawnie. (ale nie zawsze ...)

4
ssrobbi 22 listopad 2013, 07:47

4 odpowiedzi

Najlepsza odpowiedź

W składniach jQuery występuje błąd. Przegapiłeś składnię danych. To powinno być takie

function deleteMediaFromDatabase(val)
{
$.ajax({ url: 'deleteMediaFromDatabase.php',
     data: {'vals' : val},
     type: 'post',
     dataType:'json',
     success: function(output) {
                  alert(output);
              },
      error: function(request, status, error){
        alert("Error: Could not delete");
      }
});
}
1
Vishwas 22 listopad 2013, 04:39

Problemem może pochodzić z określonego typu danych, ani określony typ danych nie pasuje do zwracania przez serwer.

Jawnie ustaw typ danych, np. dataType:'json'

I upewnij się, że skrypt zwraca dane "zakodowane" w typowym typie, który wybrałeś, np. W PHP:

echo json_encode($something);

1
OuzoPower 25 styczeń 2017, 20:13

Zamiast:

$val = $_POST["vals"];

Użyj tego:

if (isset($_POST['vals']) {
    $val = $_POST['vals'];
}
1
Tom 16 marzec 2017, 10:30

Zmień składnię ajax ...

$.ajax({
    type: "POST",
    url: 'deleteMediaFromDatabase.php',
    data: {'vals' : val},//Have u tried this
    success: function(output) {
        alert(output);
    }
    error: function(request, status, error){
            alert("Error: Could not delete");
    }
);
-1
Nandakumar 22 listopad 2013, 04:53