我无法显示从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....
答案 0 :(得分:3)
每次致电
var newRow = $('.Template').clone();
您正在创建具有“Template”类的所有元素的副本。然后,您将所有这些副本附加到ID为“fillresultsdiv”的元素中。这些副本中的每一个也都应用了此“模板”类,因此下次克隆时,您将获取以前克隆的副本。
第一次调用它时只有一行,第二次是2,然后是4,然后是8,等等。
您可以将克隆线更改为
var newRow = $('.Template').clone().removeClass("Template");