以下是我的PHP代码:
<tr <?php echo $backclr; ?>>
<td class="hashtd"><a href="#"><?php echo "#" . $row['hashtag']; ?></a></td>
<td class="hashtd">
<script type = "text/javascript">
submitTerms("<?php echo $row['hashtag']; ?>", "1", "2");
</script>
<div id="totalTweets<?php echo $row['hashtag']; ?>"><span></span></div>
<div class="loading"><img src="img/preloader.gif"/></div>
</td>
</tr>
<?php
endwhile; ?>
这里我调用javascript函数submitTerms();
并在该函数中传递php参数。
以下是javascript代码:
<script type="text/javascript">
var getPage = new RegExp( /page=([^&]+)/ );
var url = "http://search.twitter.com/search.json?q=";
var search, page, pageTotal, tweets, loading;
var beforeCounter = "<b>";
var afterCounter = "</b>";
var totalTweets = 0;
function getTweets(search, page, pageTotal) {
$.getJSON( url + search + '&page=' + page + '&callback=?',
function(data) {
if( data.results.length != 0 && page != pageTotal ) {
//$('#pagesDone span').html(page);
getData(data);
}
else {
showTotal(search);
}
}
);
}
function showTotal(search) {
$('#totalTweets'+search+' span').html(beforeCounter + totalTweets + afterCounter);
totalTweets = 0;
loading = false;
}
function getData(data) {
tweets = data.results;
totalTweets += tweets.length;
nextPage = getPage.exec(data.next_page);
if( nextPage == null ) {
showTotal();
return;
}
nextPage = nextPage[1];
getTweets(search, nextPage, pageTotal);
}
function submitTerms(query, pg, pgtot) {
$('#totalTweets'+query+' span').html('');
search = query;
page = pg;
pageTotal = pgtot;
if( search == '' ) {
alert('No search query found');
return;
}
loading = true;
getTweets(search, page, pageTotal);
}
function status() {
if( loading ) $('.loading').show();
else $('.loading').hide();
}
$(function() {
loading = false;
setInterval(status, 10);
});
</script>
上面的javascript返回了twitter标签计数。但是我想要<td><div id="totalTweets<?php echo $row['hashtag']; ?>"></td>
中每一行的哈希计数。另外我在div标签中使用不同的id来获取它。
问题是它只显示最后一行的计数而不是所有行。示例:如果数据库中有5条记录,则其显示的主题标签仅计入最后一行。当我调试代码时,它显示所有主题标签的计数,但最终的渲染只是最后一行而不是所有行。
问题出在哪里?需要帮助。
答案 0 :(得分:0)
您正在致电
submitTerms("<?php echo $row['hashtag']; ?>", "1", "2");
转换为
submitTerms("movies", "1", "2");
(电影是一个例子)
javascript将此调用规范化为:getTweets("movies", 1, 2)
,其中1是页码,2是回调方法。这就是你的问题所在。您尚未定义名为“2”的回调方法。
如果不这样做,返回的JSON将包含一个名为“results”的数组键,它本身就是一个包含结果集的数组。
您可以通过正确定义$.getJSON
方法来访问此结果集。第二个参数是发送到服务器的数据,而不是从服务器返回的数据,这个数据存储在第三个参数中,请参阅:http://api.jquery.com/jQuery.getJSON/