我有下面的代码部分,它是一个简单的AJAX调用,用于从.ASMX VB .NET Web方法中检索JSON字符串。成功时,它调用下面的createList函数,该函数应该获取JSON字符串中的值(现在已经过解析和格式化)并将它们添加为新的列表项。
我的问题是,即使回调函数成功,页面也不会使用新列表项进行更新。循环执行,收到数据,我已经通过警报测试,以确保我不会发疯。
当我使用完全相同的行(用测试数据代替JSON字符串)来附加我的新列表项时,一切正常。
作为对于可能想知道为什么我认为我必须使用此方法的任何人的旁注: 重要的是我按照我的方式调用AJAX函数,因此我可以在构建列表时将多个参数传递给函数。其他参数允许我专门查找用户控件中哪个元素处于活动状态。
我对使用AJAX也相对较新。我希望我能够清楚地解释一切。
谢谢!
function getPcList(activeRow, activeTd) {
var row = $(activeRow).attr("id");
$.ajax({
url: "AJAXWebService.asmx/getPartnerColleges",
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
createList(data, activeRow, activeTd);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
function createList(data, activeRow, td) {
var obj = JSON.stringify(eval("(" + data.d + ")"));
var json = $.parseJSON(obj);
var row = $(activeRow).attr("id");
var newtd = $(td).attr("id");
for (i = 0; i < json.length - 1; i++) {
$("#"+row+ "#" + newtd + " > #list > #thelist")
.append("<li id='listitem'" + i +
"' style='width:100%; z-index:300; position:relative' onclick='txtAppend($(this).parents().eq(2))'>" +
json[i] + "</li>");
}
}
答案 0 :(得分:1)
如果从服务器返回的字符串是JSON,如dataType
调用的$.ajax()
字段所示,则不需要使用JSON.stringify()
和{{1} }。您应该能够使用eval()
直接解析字符串。