目标:在不使用Ajax刷新页面的情况下查询SQL。
我喜欢/不喜欢按钮,它们可以完美地用作表单并提交输入,但是,表单会刷新页面。
我不知道怎么做一个连接我的'liker.php'(下面)的Ajax调用,通过class / id div点击或按钮在我的主页面内操作。
$.ajax({
type: "POST",
url: "liker.php",
data: ???
success: ???
...............
我已经阅读了一些教程并寻找答案,但我仍然难过。
liker.php :
//LIKE FIELD
if (isset($_POST['like'.$id])) {
if (!in_array("$id", $like_explode)) {
if (!in_array("$id", $dislike_explode)) {
mysqli_query($db, "UPDATE likes SET pid_like=CONCAT(pid_like,',$id') WHERE user_id='$user_id'");
mysqli_query($db, "UPDATE comments SET likes=(likes+1) WHERE id='$id'");
}
else
{
$new_dislike_string = str_replace(",$id", '', $dislike_string);
mysqli_query($db, "UPDATE likes SET pid_dislike='$new_dislike_string' WHERE user_id='$user_id'");
mysqli_query($db, "UPDATE likes SET pid_like=CONCAT(pid_like,',$id') WHERE user_id='$user_id'");
mysqli_query($db, "UPDATE comments SET likes=(likes+1) WHERE id='$id'");
mysqli_query($db, "UPDATE comments SET dislikes=(dislikes-1) WHERE id='$id'");
}
}
}
//DISLIKE FIELD
if (isset($_POST['dislike'.$id])) {
if (!in_array("$id", $dislike_explode)) {
if (!in_array("$id", $like_explode)) {
mysqli_query($db, "UPDATE likes SET pid_dislike=CONCAT(pid_dislike,',$id') WHERE user_id='$user_id'");
mysqli_query($db, "UPDATE comments SET likes=(dislikes+1) WHERE id='$id'");
}
else
{
$new_like_string = str_replace(",$id", '', $like_string);
mysqli_query($db, "UPDATE likes SET pid_like='$new_like_string' WHERE user_id='$user_id'");
mysqli_query($db, "UPDATE likes SET pid_dislike=CONCAT(pid_dislike,',$id') WHERE user_id='$user_id'");
mysqli_query($db, "UPDATE comments SET dislikes=(dislikes+1) WHERE id='$id'");
mysqli_query($db, "UPDATE comments SET likes=(likes-1) WHERE id='$id'");
}
}
}
//LIKE-DISLIKE FIELD END
答案 0 :(得分:3)
我将向您解释如何在jquery中使用ajax。我不了解它的所有工作方式$ _POST变量,但我希望能帮到你。
首先使用一个类来了解何时单击像/不喜欢的元素。 第二个使用名称来了解是喜欢还是不喜欢。
例如:
<a href="ID" class="classForLikeOrDislike" name="like">Like</span>
踩:
<a href="ID" class="classForLikeOrDislike" name="dislike">Dislike</span>
El ajax
$(".classForLikeOrDislike").click(function(){
// Get the varible ID, to send to your php
var id = $(this).attr('href');
// Get the varible name, to send like or dislike
var l = $(this).attr('name');
$.post({url: "liker.php", {id: id}, success: function(result){
// do some code here
// here yo can see 'result' response of liker.php
// console.log(result);
}});
});
*使用href。通过锚标记更新更改范围标记。
更新以响应“仅点击”&#39;上面的问题
事件变量必须传递给您的匿名函数。
<script>
function chk(event)
{
// Prevent trigger submit and reload page
event.preventDefault();
var name=document.getElementById('clicker');
$.ajax({
type:"post",
url: "clicky.php",
data: {clicker:1} , <--- here goes the data that you want to send to your php file, in this case SEND $_POST['clicker'] with value 1
cache: false,
success: <-- When is success your request, whats you want to make (other code) maybe print 'OK'
});
}
</script>
<?php
if(isset($_POST['clicker']))
{
mysqli_query($db,"UPDATE items SET this='that' WHERE number='1'")
}
?>
答案 1 :(得分:0)
尝试这样的事情:
$("#likeButtonID").click( function()
{
$.ajax({
type: "POST",
url: "liker.php",
data: { like: $(this).val(); },
success: function(result) {
alert('Ajax Success Ran');
}
});
});
或者,如果页面上有许多类似的按钮,则可以对每个按钮执行jquery循环。
答案 2 :(得分:0)
WebMethod
让一个像webservice一样的ajax调用,没有处理响应,json / xml格式的类正在撤销(或者没有,只是在服务器上执行动作)
非常简单,如果有帮助,请尝试这个 PHP Equivalent to Authorized ASP.NET WebMethod (AJAX)?
问候