2

免責事項として、私は jQuery のスカベンジャー/ハッカーであり、熟練した開発者ではありません。

私は Twitter 風のページネーションを構築しようとしていますが、これはほとんど機能しています。

私はPHPとMySQLを使用してJSON形式でデータを取得しています。これは次のように届きます。

[
    {
        "bookmark_id":"5507",
        "creation":"Mon 16th Jul 2012",
        "url":"http:\/\/www.bbc.co.uk\/news\/science-environment-18833386",
        "title":"Light trick to see around corners ..."
    }

...

]

コード自体は次のとおりです。

<script type="text/javascript">
    function paginate(limit) {
        if (limit == 0) { count = 0; } else if (limit > 0) { count += 10; }
        $(".flash").show();
        $(".flash").fadeIn(400).html("Loading...");
            var data = "limit=" + count;
            $.ajax({
                type: "POST",
                url: "<?php echo config_item('base_url'); ?>topics/jq_get_bookmarks_for_topic_by_tag_as_object/" + <?php echo $results['select_topic'][0]['topic_id']; ?>,
                data: data,
                cache: false,
                success: function **(index, element)** {
                    alert(index);
                    $(".flash").hide();
                    $(".load-link").addClass("link-none");
                    for (var i=0;i<element.length;i++) {
                        $("#data-topics-bookmarks-tags").append('<tr><td>[<a href="<?php echo config_item('base_url'); ?>bookmarks/view/' + **element.bookmark_id** + '">View</a>] [<a href="<?php echo config_item('base_url'); ?>bookmarks/visit/' + element.bookmark_id + '" target="_blank">Link</a>] <a href="<?php echo config_item('base_url'); ?>bookmarks/edit/' + element.bookmark_id + '" title="Edit ' + element.title + '">&lsquo;' + element.title + '&rsquo;</a></td><td>' + element.creation + '</td></tr>');
                    }
                }
            }
        );
    }
    paginate("0");
</script> 

さらにデータの読み込みをトリガーするリンクは次のとおりです。

<p><a href="#load" onclick="paginate('10')">Load Bookmarks</a></p>

すべてが機能しています..私が実際にデータにアクセスして、「未定義」以外のものとして表示できるという明らかな例外があります。

太字で示した 2 つの領域で考えられるすべての組み合わせを試しました。

読み込みリンクをクリックすると、期待どおりにテーブルが追加されますが、すべての項目が「未定義」です。

はい、データは上記のように送信されます。アラート(インデックス)からデータを取得しました。

これは私たちの中の熟練者にとっては簡単な修正であると確信していますが、私は彼らの中にいません.

4

1 に答える 1

3

デフォルトでは、.ajax 関数は返された JSON データをオブジェクトとして解析しません。$.parseJSON(index) を自分で呼び出すか、次のように .ajax() 設定で dataType を「json」に設定する必要があります。

$.ajax({
    type: "POST",
    dataType: "json",
    ...

また、成功関数の戻り引数は、生データ、textStatus、および jqXHR オブジェクトです。したがって、あなたの目的のために本当に必要なのは、dataType を含めると JSON として自動的に解析されるデータだけです。したがって、「成功」引数を次のように変更できます。

success: function (element) {

必要でない限り、textStatus および jqXHR 引数を処理する必要はありません。

于 2013-05-09T08:27:48.783 に答える