【问题标题】:Send Like/Dislike to database with ajax使用 ajax 向数据库发送喜欢/不喜欢
【发布时间】:2012-07-24 02:49:31
【问题描述】:

我有一个小问题,我需要向一个文件发送一个 ajax 请求。 这是我的 HTML 文件 (index.html)

<a id="like" href="./?act=like&id=24" title="Nobody likes this post!">Like</a> &middot; <a id="dislike" href="./?act=dislike&id=24" title="Nobody dislikes this post!">Dislike</a>

还有我的like.php文件:

<?php
if(!is_logged()) {
    header("Location: ./?act=Home");
die();
}
$uid = $user['id'];
$id = $_GET['id'];
if(isset($id)) {
    $query = mysql_query("INSERT INTO ld (auth_id,post_id,val) 
                          VALUES ('".$uid."','".$id."','1')");
    if($query) {
    header("Location: ".$_SERVER['HTTP_REFERER']);
    } else {
    echo "Contatta l'amministratore riportando l'errore 101";
    }
} else {
header("Location: ./?act=Home");
}
?>

还有我的“ld”表:

== Struttura della tabella ld

|------
|Campo     |Tipo      |Null|Predefinito
|------
|//**id**//|int(5)    |No  |
|auth_id   |varchar(5)|No  |
|post_id   |varchar(5)|No  |
|val       |varchar(1)|No  |
== Dump dei dati per la tabella ld

|5|4|1|1
|6|4|1|1
|7|4|1|1
|8|4|1|1
|9|4|1|1
|10|4|1|1
|12|4|1|1
|13|4|1|1
|14|4|1|2
|20|4|15|1
|23|5|17|1
|29|4|17|1
|30|4|18|1
== Struttura della tabella ld

|------
|Campo     |Tipo      |Null|Predefinito
|------
|//**id**//|int(5)    |No  |
|auth_id   |varchar(5)|No  |
|post_id   |varchar(5)|No  |
|val       |varchar(1)|No  |

我真的不知道怎么发送ajax请求,我也试过学习ajax但是没办法,看不懂。

【问题讨论】:

标签: php mysql ajax social-media-like


【解决方案1】:

你应该使用jquery,它实际上很简单。首先将其包含在您的 HTML 文件中:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

然后添加这个,它被称为“listner”,在这种情况下它会注意你的链接何时被点击:

// A # is used since we are using an id to get the element
// A . is used for a class, but we are using the id at the moment
$('#like').click(function(e) { // We assign a click listner with a handler (a function)
  e.preventDefault(); // run this to stop it from going to a new page automatically
  $.get('./', {'act' : 'like', 'id' : $(this).attr('data')}, function(e) {
    // Handle success here
  }, 'json'); // expecting a json object back by using echo json_encode(array(...)) in PHP
});

在我的示例中,您需要将 html 更改为:

<a id="like" href="" data="24" title="Nobody likes this post!">Like</a>

然后你可以对不喜欢做同样的事情。我在 $.get 中做的第二个参数 {} 是一个 javascript 数组,仅供参考。这是我在 jquery 文档中使用的 $.get 方法:http://api.jquery.com/jQuery.get/

有关什么是 ajax 及其工作原理的信息,请查看这篇文章:http://www.webdesignerdepot.com/2008/11/how-ajax-works/

如有任何疑问,请随时询问

【讨论】:

  • 非常感谢这是我想做的!还有一个问题:要实时获得点赞数,我是否必须再次使用 Ajax?
  • 这是处理程序事件的一部分 (function(e) {}) 所以假设有 X 个喜欢,现在应该有 X+1,但也有可能还有 10 个人喜欢不管你有什么,所以在后端脚本中,你应该在更新当前人的 # 后获得喜欢的数量。然后返回此数字并使用处理程序更改显示的数字。如果您希望它不断更新而不必喜欢/不喜欢,那么您需要设置一个计时器脚本以每 X 分钟运行一次,以访问另一个脚本,该脚本获取每件事的喜欢数 :) Gl!
【解决方案2】:

我没有代表添加评论,所以我现在必须将我的 cmets 作为答案。查看http://www.w3schools.com/ajax/default.asphttp://api.jquery.com/jQuery.ajax/

解释 ajax 和 jquery 的答案太长了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2016-04-04
    • 2016-12-31
    • 2015-05-13
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多