gpt4 book ai didi

php - jQuery AJAX 在成功函数中引用 $(this)

转载 作者:可可西里 更新时间:2023-11-01 13:11:38 25 4
gpt4 key购买 nike

我有一个投票系统,它将点击项目的 ID 发送到 PHP 脚本,PHP 更新数据库并通过 JSON 编码数组回显新的投票计数。

这是 jQuery:

$(".vote_up").click(function(){
var id = this.id;
var vote = $(this).attr("class");
var data = "id=" + id + "&vote=" + vote;
$.ajax
({
type: "POST",
url: "vote.php",
data: data,
cache: false,
success: function(data)
{
for(var x in data) {
$(".votes_up").find(id).html(data[x].vote_up);
$(".votes_down").find(id).html(data[x].vote_down);
}
}
});
});

所以当我首先构建项目时,我在数据库中获取记录 ID 并将其设置为项目 ID。所以我想做的是引用被单击的确切项目并将其 HTML 设置为从 PHP 返回的数据。我已经检查了 Firebug,我得到了正确的数据,但票数没有改变。有什么想法吗?

这是供引用的PHP:

$query = "SELECT vote_up, vote_down FROM posts WHERE id = '".$id."'";
$result1 = mysql_query($query);
$output = Array();
while ($row = mysql_fetch_array($result1)){
$output[] = Array(
"vote_up" => $row['vote_up'],
"vote_down" => $row['vote_down'],
);
}
echo json_encode($output);

最佳答案

如果您只想在 success: 回调中使用 this 来引用被点击的元素,只需设置 context: 属性AJAX 请求。

$.ajax({
context: this, // set the context of the callbacks
type: "POST",
url: "vote.php",
data: data,
cache: false,
success: function(data) {
// now "this" refers to the element that was clicked
}

你可以通过做一些更通用的事情来测试它,比如:

$(this).html("yep, it works");

... 如果可行,请考虑在循环中对同一元素执行 .html() 真的没有意义,因为每次 .html( ) 覆盖全部内容。

如果您要从循环中追加数据,请改用 .append():

for(var x in data) {
$(this).append(data[x].vote_up);
$(this).append(data[x].vote_down);
}

关于php - jQuery AJAX 在成功函数中引用 $(this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com