我有一个表,可以从经常更新的数据库进行查询,<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); }
});
}
});
});
});
答案 0 :(得分:0)
您的代码中的问题是,您的网页上有多个具有相同ID的跨度:totalvotes1
和totalvotes2
。因此,当您执行$('#totalvotes1').text(data);
时,浏览器不知道要更改哪一个。
为了解决这个问题,您可以考虑以下方法。首先,通过添加产品的唯一键来更改跨度的ID。
<span id="total_vote_up_<?php echo $id; ?>">
<span id="total_vote_down_<?php echo $id; ?>">
要改变的第二件事是触发事件的链接的id。你可以使它的id类似于一个跨度,以便在没有JSON的情况下轻松更改跨度内容。
<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为total_vote_up_123
的范围内。