Zrobiłem stronę, która pokazuje dynamicznie stworzony HTML używając ajaxa z jQuery.
Na jednej części pokazuje różne wpisy z tabeli bazy danych, aw każdym rzędzie znajduje się przycisk do usunięcia danego wpisu z bazy danych. Jest to kod, który powinien uczynić to się stało:
$('body').on('click', '.deleteWaitlist', function(){
console.log("Clicked on .deleteWaitlist name = " + $(this).attr('name'));
// Get the varible name to send to your php
var i = $(this).attr('name');
console.log("$(this).attr('name') = i");
$.post({
url: "deleteWaitlist.php",
data: { id : i},
success: function(result){
console.log("Ajax success " + result);
},
//dataType: "html"
});
return false;
});
Jednak po kliknięciu przycisku pojawia się błąd
POST localhost:8888/workplace/site/[object%20Object] 404 (Not Found)
mnie poprawić, jeśli się mylę, ale [object% 20Object] jest co otrzymujemy z nieokreślonej metody toSting(), prawda? Próbowałem określać różne rodzaje typów danych, ale nie czyniłem różnicy.
Nie mogę znaleźć problemu, czy dataType może być czymś innym niż xml, json, script lub html? Ta funkcja nie zwraca niczego, więc dataType nie jest nawet potrzebna, prawda?
To deleteWaitlist.php:
<?php
include("con.php");
$sql = "DELETE FROM waitlist WHERE id=" . $_POST[id] . "";
mysqli_query($c,$sql);
?>
EDIT: Do wyjaśnienia, wspomniany błąd pokazuje tylko na konsoli, ponieważ chcę witryny asynchronicznej większość przycisków zapobiec nawigację. Na rzeczywistej stronie kliknięcie przycisku nie daje żadnego efektu. Ponadto, jest to kod, który tworzy przyciski:
while ($places = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>". $places ['ID']."</td>";
echo "<td>". $places ['NAME']."</td>";
echo "<td>". $places ['CHAIRS']."</td>";
echo "<td>". $places ['CREATED']."</td>";
echo '<td>
<button class="btn btn-default deleteWaitlist" type="submit" name="' . $places['ID'] . '">X</button>
</td>';
echo "</tr>";
}
Jak wygląda kod HTML przycisku i wokół niego? Ten adres URL nawet nie pasuje do twojego adresu URL 'deleteWaitlist.php' w wywołaniu AJAX, więc wątpię, że jest on bezpośrednio związany z kodem, który pokazałeś do tej pory. – Phil
Jako szybki test, spróbuj' return false' w obsłudze kliknięcia, aby zapobiec domyślne zdarzenie i zatrzymanie propagacji. Umieścić go tuż po swoim '$ .post ({...});' – Phil
Również przygotowane oświadczenia są twoim przyjacielem. '$ stmt = $ c-> prepare ('USUŃ Z listy oczekującej WHERE id =?'); $ stmt-> bind_param ('i', $ _POST ['id']); $ stmt-> execute(); ' – Phil