Здравейте, имам формуляр с два бутона за подаване и просто въвеждане на текст. Искам формулярът да бъде изпратен от ajax (измислих как да направя това).
форма:
<form method="post" action="likesystem.php" id="7">
<input class="form-control" type="hidden" value="7" name="postid">
<button type="submit" class="btn btn-success btn-sm" name="poslike" value="liking">Like this</button>
<button type="submit" class="btn btn-danger btn-sm" name="poslike" value="disliking">Dislike this</button>
скриптът е следният:
<script>
$("#7").on("submit", function(event) {
event.preventDefault();
$.ajax({
url: "likesystem.php",
type: "POST",
data: $("#7").serialize(),
});
});
</script>
php страницата:
<?php
require_once "config.php";
$link = mysqli_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD, $DB_NAME);
if(! $link ) {
die("Could not connect: " . mysql_error());
echo "Connection Error";
}
if($_SERVER["REQUEST_METHOD"] == "POST") {
$postid = $_POST["postid"];
switch($_POST["poslike"]) {
case "liking":
$sql = "UPDATE posts SET poslike = poslike + 1 WHERE id = $postid";
case "disliking":
$sql = "UPDATE posts SET dislike = dislike + 1 WHERE id = $postid";
}
if (mysqli_query($link, $sql)) {
echo "You did something";
} else {
echo "There was an error";
}
mysqli_close($link);
}
Какво правя погрешно тук? Проверих няколко сайта, но отговорите там биха могли да помогнат и затова го питам тук сега.
Отговори:
0 за отговор № 1Променете формата си на това:
<form method="post" action="likesystem.php" id="7">
<input class="form-control" type="hidden" value="7" name="postid" id="postid">
<button type="submit" class="btn btn-success btn-sm vote" name="poslike" value="liking">Like this</button>
<button type="submit" class="btn btn-danger btn-sm vote" name="poslike" value="disliking">Dislike this</button>
</form>
и опитайте този код за скрипт:
<script>
$(".vote").on("click", function(event) {
event.preventDefault();
var postid = $("#postid").val();
var poslike = $(this).attr("value");
$.ajax({
url: "likesystem.php",
type: "POST",
data: "postid=" + postid + "&poslike=" + poslike,
});
});
</script>