0

以下是我的 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 主题标签计数。但是我想要.hashcount 中的每一行<td><div id="totalTweets<?php echo $row['hashtag']; ?>"></td>。我也在 div 标签中使用不同的 id 来获取它。

问题是它只显示最后一行的计数,而不是所有行。示例:如果数据库中有 5 条记录,则它仅显示最后一行的主题标签计数。当我调试代码时,它显示所有主题标签的计数,但最终渲染仅是最后一行而不是所有行。

问题出在哪里?需要帮忙。

4

1 回答 1

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/

于 2013-04-06T18:29:33.167 回答