0

asp.net WebMethod から受け取った結果の表示に問題があります。HTML テンプレートがあり、JSON 応答からの結果を入力します。問題は、最初の応答が 1 回表示され、2 回目は 2 回、3 回目は 4 回、4 回目は 8 回、というように表示されることです。ここにjQueryがあります(応答はasp.netから来ており、自動的にそこに置かれるため、最初に「d」を参照する必要があります)

     function fnGetContent(keyword) {
            var NewKeyword = keyword.tag;
            var type = keyword.type
            var oldresults = $("#fillresultsdiv").html()
            $('#hidQueryType').val('tagsearch');
            $.ajax({
                type: "POST",  //GetEvents(iType As Integer, sSearch As String)
                url: "Default.aspx/GetEvents",
                data: "{'iType':'" + type + "','sSearch' : '" + NewKeyword + "' }",
                contentType: "application/json; charset=utf-8",
                dataType: "json",

                success: function (msg) {
                    var events = [];
                    var obj = $.parseJSON(msg.d);

                    $.each(obj.res, function() {
                        var newRow = $('.Template').clone();

                        // Now loop through the object
                        for (var prop in this) {
                            if (this.hasOwnProperty(prop)) {

                                // Lucky for you, the keys match the classes :)
                                $('.' + prop, newRow).text(this[prop]);
                            }
                        }
                        $('#fillresultsdiv').append(newRow);
                    });

各イベントの JSON には 1 つのエントリしかありません。これを実現しているのは jQuery コードです。応答例:

 {"d":"{\"res\":[{\"day\":\"26\",\"dayofweek\":\"Tue\",\"month\":\"Jun\",\"title\":\"Glen Hansard\"
       ,\"venue\":\"Vic Theatre\",\"time\":\"7:00 PM\",\"ticketurl\":
        \"http://seatgeek.com/glen-hansard-tickets/chicago-illinois....
4

1 に答える 1

3

電話するたびに

var newRow = $('.Template').clone();

「テンプレート」クラスを持つすべての要素のコピーを作成しています。次に、これらすべてのコピーを「fillresultsdiv」という ID を持つ要素に追加します。これらのコピーのそれぞれにも、この「テンプレート」クラスが適用されているため、次にクローンを作成するときは、以前にクローンしたコピーを取得しています。

最初に呼び出すときは 1 行しかなく、2 回目は 2、次に 4、次に 8 などです。

おそらく、クローン行を次のように変更できます

var newRow = $('.Template').clone().removeClass("Template");
于 2012-06-26T19:29:25.187 に答える