gpt4 book ai didi

javascript - 替换或管理ajax请求中的json数据

转载 作者:行者123 更新时间:2023-11-28 03:01:35 25 4
gpt4 key购买 nike

我有一个页面,它发出 ajax 请求并以 json 格式获取数据。

在将数据添加到 DOM 之前,我需要对其进行排序,因此使用以下代码将其放入一个对象中

function(data) {
var birthDates = {};
var uids = {};
$.each(data.users, function() {

if (!uids[this.uid]) {
uids[this.uid] = [];
uids[this.uid].push(this);
}
if (!birthDates[this.birthDate])
birthDates[this.birthDate] = [];
birthDates[this.birthDate].push(this);
});
for (var d in birthDates) {
var date = d;
$('div#holdDates').append('<ul class="dayList" id="' + date + '"><li class="date" >' + date + '</li></ul>');
$.each(birthDates[date], function() {
$('ul#' + date).append('<li class="show" id="' + this.uid + '">' + this.name + '</li>');
});
}

$('li.show').click(function() {
var getuid = $(this).attr('id');
$showArr = uids[getuid];
// now I can get the extended data about the user

当页面第一次加载时,这一切都很好,但是我遇到了两个问题,都是由于发出第二个 ajax 请求而导致的1)如果我发出相同的ajax请求(给出相同的变量,因此相同的数据再次返回),那么数据会被添加到新创建的对象(uids和birthDates)两次,我不知道如何保持其独特性2)有时(我无法调试找出原因)我没有从 uids 对象中获取任何扩展用户数据。 (点击 li 之后我做的事情

有什么想法吗?我这样做有效吗?我觉得很奇怪,你不能清空你创建的对象,但显然我读到的所有内容都说你不能。

添加

好吧,发布此内容后,我要做的下一件事是构建一个依赖于返回的 json 的动态标签云。所以,现在我又遇到了同样的问题。我需要在每次请求后将标签云标记为新的。我真的希望有一种方法可以摆脱 JavaScript 中的“遗留”数据。

谢谢,皮特

最佳答案

每次调用函数时,在函数(数据)内使用 var 关键字声明的所有内容都会重新创建。

您的问题的症状是什么?您是否确实查看了 firebug 中 uids 变量的值并发现项目正在重复,或者您是否只是看到页面上的日期/名称加倍了?

我怀疑这是由于在显示结果之前没有清除正在调用 .append() 的 DOM 元素造成的。

尝试添加到函数的开头:

$('div#holdDates').empty();

以及日期显示循环:

$('ul#'+date).empty();

为了更好地衡量,在函数开始时:

$('li.show').unbind('click');

关于javascript - 替换或管理ajax请求中的json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com