2013-02-21 129 views
0

JSON變量我有一個從頻繁更新的數據庫查詢表,並在<span id="totalvotes1"></span>並在<span id="totalvotes2"></span>我需要能夠能夠識別那些在該行success: function(data) { $('#totalvotes1').text(data); } });我在阿賈克斯各對應行查詢...它現在設置的方式,我的ajax將只顯示信息回<span id="totalvotes1"></span>在查詢的最後一行....顯然我需要使用json來完成這一點,但我不知道如何..任何幫助非常感謝,謝謝!使用Ajax和PHP

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

你不會在這裏顯示它,但是你的鏈接上仍然有'id'屬性嗎?如果是這樣,你可以像'totalvotes'那樣編號,你可以在你的JS選擇器中使用它,比如'$('#totalvotes'+ id).text(data);'^^ – Jon 2013-02-21 08:56:55

+0

我可以使用$('#totalvotes '+ mes_id1).text(data); ? $ mes_id1在我的鏈接上發送。我不太清楚你在那裏說什麼... – trickpatty 2013-02-21 09:05:21

+0

我可以得到你的電子郵件或Facebook喬恩...?只是爲了使聊天更容易... – trickpatty 2013-02-21 09:12:32

回答

0

的問題在你的代碼是,你有你的頁面上的多個跨度具有相同的ID:totalvotes1totalvotes2。所以當你做$('#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; ?>"...> 

正如你所看到的,ids是類似的。這允許你做如下改變跨度內容:

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

基本上,它會採取的鏈接(比如,vote_up_123)的ID,並把總票數量爲跨度的total_vote_up_123 ID。

+0

我完全看到這是怎麼回事工作,這是完美的,但我不能讓它的功能正確...讓我回到你身上... – trickpatty 2013-02-21 09:29:13

+0

它絕對只是不適合我....我不明白爲什麼..在你發佈的內容中是否有缺失...? – trickpatty 2013-02-21 09:35:58

+0

我基本上只是使用相同的代碼,而不是<?php echo $ id; ?>我用<?php echo $ mes_id; ?> cuz這是我與之合作的唯一身份證。但這不起作用,阿賈克斯現在只顯示空白空間 – trickpatty 2013-02-21 09:44:20