0

私はこのコードを手に入れました:

function datatable_display(json) {

    var order = "desc";

    var len = $('.div_gui_tabledata').length;
    len = len++;
    var table = $('#dynamic_' + len);

    document.write("<div class='div_gui_tabledata' id='dynamic_" + len + "' >");


    this.array = JSON.stringify(json);

    $.ajax({
        type: "POST",
        url: "../../api.php?p=datatable_sort",
        data: "sortby=2&data=" + array,
        dataType: "html",
        success: function (data) {
            $('#dynamic_' + len).html(data);
        }
    });

    document.write("</div>");


    $('#dynamic_' + len + ' .sortable').live("click", function () {

        var index = $(this).index();


        $.ajax({
            type: "POST",
            url: "../../api.php?p=datatable_sort",
            data: "order=" + order + "&sortby=" + index + "&data=" + array,
            dataType: "html",
            success: function (data) {
                $('#dynamic_' + len).html(data);
                if (order == "desc")
                    order = "asc";
                else
                    order = "desc";
            }
        });
    });

}

この関数をPHPスクリプトから次のように呼び出します。

 $json = json_encode($this->arr);
 return "<script>datatable_display($json);</script></div>";

関数を2回以上呼び出すと、問題はjson-Object配列が常に最後の配列で上書きされることです。

JavascriptにOOPのようなものはありますか?または、各関数呼び出しを脅かす何かが一意ですか?divとSort-Linksの一意のIDを生成しますが、最新のJSONオブジェクトのみが使用されます。

4

1 に答える 1

0

自分の生活をずっと楽にするために、さまざまな方法で建築を行うことができますが、時間内に自分でこれらを発見する可能性があります。差し迫った質問に答えるには、JavaScriptの組み込みオブジェクトを使用することで問題を解決できます。

var str = "something"; // choose your own key
this.store = {}
this.store[str] = JSON.stringify(json);

また

this.array = []; // in your initializer or constructor
this.array.push(JSON.stringify(json)); // this will add to the array as you go

このようにして、以前に持っていたものを上書きすることなく、jsonの履歴を保持できます。

于 2013-01-21T23:28:43.260 に答える