0

頻繁に更新されるデータベースからクエリを実行するテーブルがあり、クエリされた対応する行ごとに ajaxの行でそれらを識別できるようにする必要がある場所<span id="totalvotes1"></span>と場所...正しく設定されている方法今、私のajaxは、照会された最後の行に情報を表示するだけです....明らかに、これを達成するにはjsonを使用する必要がありますが、方法がわかりません...どんな助けも大歓迎です、ありがとう!<span id="totalvotes2"></span>success: function(data) { $('#totalvotes1').text(data); } });<span id="totalvotes1"></span>

<?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

totalvotes1コードの問題は、同じ id:とを持つ複数のスパンがページにあることですtotalvotes2$('#totalvotes1').text(data);そのため、ブラウザはどちらを変更すればよいかわかりません。

これに対抗するには、次のアプローチを検討してください。まず、製品の一意のキーを追加して、スパンの ID を変更します。

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

2 番目に変更することは、イベントを発生させるリンクの ID です。JSON を使用せずにスパンのコンテンツを簡単に変更できるようにするために、ID を 1 つのスパンに似たものにすることができます。

<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ます。

于 2013-02-21T09:16:24.120 に答える