下面的代码部分是一个简单的 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>");
}
}
最佳答案
如果从服务器返回的字符串是 JSON,如 $.ajax()
调用的 dataType
字段所示,则不需要使用JSON.stringify()
和 eval()
。您应该能够直接使用 $.parseJSON()
解析字符串。
关于javascript - AJAX 成功函数调用成功但未正确更新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886625/