0

我有一个表,它从一个经常更新的数据库中查询,<span id="totalvotes1"></span>以及<span id="totalvotes2"></span>我需要能够success: function(data) { $('#totalvotes1').text(data); } });在我的 ajax 中为每个查询的相应行识别行中的那些......它的设置方式正确现在,我的 ajax 只会将信息显示回<span id="totalvotes1"></span>查询的最后一行......显然我需要使用 json 来完成此操作,但我不知道如何......非常感谢任何帮助,谢谢!

<?php

$sql = mysql_query("SELECT * FROM blogData ORDER BY id DESC");
$sql2=mysql_query("SELECT * FROM messages WHERE mod(mes_id,2) = 0 ORDER BY mes_id DESC");
$sql3=mysql_query("SELECT * FROM messages WHERE mod(mes_id,2) = 1 ORDER BY mes_id DESC");

$count_variable = 0;

while(($row = mysql_fetch_array($sql))AND($row2 = mysql_fetch_array($sql2))AND($row3 = mysql_fetch_array($sql3)) ){
$id = $row['id'];
$title = $row['title'];
$content = $row['content'];
$category = $row['category'];
$podcast = $row['podcast'];
$datetime = $row['datetime'];

$message1=$row2['msg'];
$mes_id1=$row2['mes_id'];
$totalvotes1=$row2['totalvotes'];

$message2=$row3['msg'];
$mes_id2=$row3['mes_id'];
$totalvotes2=$row3['totalvotes'];


?>

<table class="content">
<tr>
<td>


<div id="main">
<div id="left">
<span class='up'><a href="" class="vote" name="up" data-options="key1=<?php echo $mes_id1;?>&key2=<?php echo $mes_id2;?>"><img src="up.png" alt="Down" /></a></span><br />
<span id="totalvotes1"><?php echo $totalvotes1; ?></span><br />
</div>
<div id="message">
<?php echo $message1; ?>
</div>
<div class="clearfix"></div>
</div>
<div id="main">
<div id="right">
<br />
<span id="totalvotes2"><?php echo $totalvotes2; ?></span><br />
<span class='down'><a href="" class="vote" name="down" data-options="key1=<?php echo  $mes_id1;?>&key2=<?php echo $mes_id2;?>"><img src="down.png" alt="Down" /></a></span>
</div>
<div id="message">
<?php echo $message2; ?>
</div>
<div class="clearfix"></div>
</div>
</td>
</tr>
</table>

<?php
 }
?>

这是我的 general.js 文件

$(".vote").click(function()  
{

var id = $(this).attr("id");
var name = $(this).attr("name");
var eData = $(this).attr("data-options");
var dataString = 'id='+ id + '&' + eData ;
var parent = $(this);


if(name=='up')
{

$(this).fadeIn(200).html('');
$.ajax({
type: "POST",
url: "up.php",
data: dataString,
cache: false,

success: function(data) { $('#totalvotes1').text(data); }
});

}
else
{

$(this).fadeIn(200).html('');
$.ajax({
type: "POST",
url: "down.php",
data: dataString,
cache: false,

success: function(data) { $('#totalvotes2').text(data); }

});


}
});


});
});
4

1 回答 1

0

您的代码中的问题是您的页面上有多个具有相同 ids:totalvotes1totalvotes2. 因此,当您这样做时$('#totalvotes1').text(data);,浏览器不知道要更改哪一个。

为了解决这个问题,您可以考虑以下方法。首先,通过添加产品的唯一键来更改跨度的 ID。

<span id="total_vote_up_<?php echo $id; ?>">
<span id="total_vote_down_<?php echo $id; ?>">

要更改的第二件事是触发事件的链接的 ID。你可以让它的 id 类似于一个 span 必须在没有 JSON 的情况下轻松更改 span 的内容。

<a class="vote" name="up" id="vote_up_<?php echo $id; ?>"...>
<a class="vote" name="down" id="vote_down_<?php echo $id; ?>"...>

如您所见,ID 是相似的。这允许您执行以下操作来更改跨度内容:

success: function(data) { $('#total_' + $(this).attr("id")). text(data); }

基本上,它将获取链接的 id(例如vote_up_123)并将总票数放入 id 为 的 span 中total_vote_up_123

于 2013-02-21T09:16:24.120 回答