0

我无法显示从 asp.net WebMethod 收到的结果。我有一个 HTML 模板并填写 JSON 响应的结果。问题是第一个响应显示一次,第二个显示2次,第三个显示4次,第四个显示8次,依此类推。这是jQuery(我需要先引用“d”,因为响应来自asp.net,它们会自动将其放在那里)

     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 中只有一个条目,是 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();

您正在创建具有“模板”类的所有元素的副本。然后,您将所有这些副本附加到 id 为“fillresultsdiv”的元素中。这些副本中的每一个也都应用了这个“模板”类,因此下次克隆时,您将拾取先前克隆的副本。

第一次调用它时只有一行,第二次调用 2,然后是 4,然后是 8,依此类推。

您可能只需将克隆线更改为

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