AJAX отправляет публичную статическую функцию - PullRequest
0 голосов
/ 06 октября 2019

Я хочу вставить like в базу данных, но я хочу это на нескольких страницах. Я написал страницу, где я вставил likes, и я включил эту страницу на всех других страницах. Это работает, но теперь каждый раз, когда я like, страница перезагружается. Я думал, что смогу это исправить с помощью AJAX, но не смог найти решение.

Index.php:

include_once('Post.php');

if(isset($_GET['postId'])) {
    Post::likePost($_GET['postId'], $userId);
}

//Here sql to select postText, postId...
//Here echo the post

<form action="index.php?postId='.$postId.'" method="post">   
    <input type="submit" name="like" value="Like">
    <input type="submit" name="unlike" value="Unlike">
</form>

Post.php:

class Post {
    public static function likePost($postId, $likerId) {
        //select database and check if user already liked post. If yes: -1 like if no: +1 like
    }
}

Кто-нибудь знает, могу ли я использовать AJAX для отправки Post::likePost($_GET['postId'], $userId);, чтобы я мог like сообщение без обновления?

1 Ответ

0 голосов
/ 06 октября 2019

Вот как вы можете это попробовать. код хорошо прокомментирован

<html><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script 
  src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 
  type="text/javascript" charset="utf-8"></script>


<script>

$(document).ready(function(){
  $(".like, .unlike").click(function(){ 

var postId= 1;
//var post1 = $('#postId').val();
 var id_likeunlike = this.id;   // Getting Button id for like or unlike
var userId= 101;

var datasend = "postId="+ postId + "&id_likeunlike=" + id_likeunlike + "&userId=" + userId;

// display a loading image when sending ajax request
$('#loader').fadeIn(400).html('<br><span class="well"><img src="loader.gif" align="absmiddle">&nbsp;Please Wait, Your Data is being Submitted</span>');

        $.ajax({

            type:'POST',
            url:'post.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(msg){
$('#loader').hide();
            alert('success');   

                $('#listpost').fadeIn('slow').prepend(msg);

            }


        });


});

});




</script>
  </head>
    <body>
<div id="loader"> </div>
    <div id="listpost"> </div>


    <input type="submit" id="like" class="like" name="like" value="Like">
    <input type="submit" id="unlike" class="unlike"  name="unlike" value="Unlike">

</body>

post.php

<?php

$postId = intval($_POST['postId']); 
$id_likeunlike = strip_tags($_POST['id_likeunlike']); 
$userId = strip_tags($_POST['userId']); 


if($id_likeunlike=='like'){
echo "like success";
}
elseif($id_likeunlike=='unlike'){
echo "unlike success";
}

else{
echo "Error occured";
}


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...