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 のハッシュタグ数を返しています。ただし、各行のハッシュカウントが必要です<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 には、結果セットを含む配列である「結果」と呼ばれる配列キーが含まれます。メソッドを適切に定義することで、この結果セットにアクセスできます$.getJSON。2 番目のパラメーターはサーバーに送信されるデータであり、サーバーから返されるデータではありません。これは 3 番目のパラメーターに格納されます。http: //api.jquery.com/jQuery.getJSON/を参照してください。

于 2013-04-06T18:29:33.167 に答える