Observables不会更新值

时间:2014-04-03 11:55:26

标签: jquery knockout.js internet-explorer-11

Ajax调用只会执行一次,然后就像缓存响应一样,因此我的observable会保留旧值。

代码如下所示:

        $.ajax({
            url: "@Url.Action("GetInfo", "Info")",
            type: "GET",
            dataType: 'json',
            data: { id: newSelection },
            async: false,
            contentType: "application/json",
            success: function (response) {
                if (response.success) {
                    var array = [];
                    var existing = [];
                    $.each(response.data, function (index, value) {
                        array.push(value);
                        existing.push(value)
                    });


                    self.myObservable(array);
                    self.myObservable2(existing);

                } else {
                    alert(response.message);
                }
            }
        });
    });

为什么这段代码在firefox和chrome中完美运行但是不是吗?

2 个答案:

答案 0 :(得分:2)

找到解决方案here

问题是IE自动缓存使用GET作为方法的ajax响应,而firefox和chrome则没有。

我的解决方案是在ajax调用中添加cache:false。

答案 1 :(得分:1)

离开页面时是否尝试使用ko.cleanNode

示例:

$(document).on("pagehide", function()
{
     ko.cleanNode(document);
});