查询SQL而不使用Ajax刷新页面

时间:2015-07-27 05:58:37

标签: javascript php jquery ajax

目标:在不使用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

3 个答案:

答案 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格式的类正在撤销(或者没有,只是在服务器上执行动作)

在AspNet中

非常简单,如果有帮助,请尝试这个 PHP Equivalent to Authorized ASP.NET WebMethod (AJAX)?

问候