javascript - AJAX 成功函数调用成功但未正确更新页面

标签 javascript jquery asp.net ajax vb.net

下面的代码部分是一个简单的 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/

相关文章:

c# - 将youtube播放列表嵌入网页中

javascript - lodash _.uniqWith 性能下降

javascript - NodeJS 对象要求

javascript - 文本框中的不同字体

javascript - 如何计算可变高度

javascript - 将当前窗口或页面位置与正则表达式进行比较。 jQuery 或 JavaScript

c# - 告诉 Web 引用使用 web.config 或如何使 settings.settings 可编辑

javascript - Google Closure Compiler 错误地删除了函数调用

javascript - 如何使用 jquery 切换 3 种背景颜色

c# - 从下拉列表 C# 中按值删除多个项目